selamat malam para pembaca sekalian..
kali ini Insan dapat tugas Java, di soal tertulis 8 soal.
dan ini jawabannyaa,,
tak kasih tau scriptnya dulu yaa..
package Praktek1;
import javax.swing.JOptionPane;
public class MenuDariJOption {
private static String name;
private static String gender;
private static String jk;
private static String des;
private static int validDes;
static StringBuilder Hasilbiner= new StringBuilder();
static StringBuilder hexaHasil= new StringBuilder();
static StringBuilder octalHasil= new StringBuilder();
static String hi;
private static int ji,ro,lu,pat,mo,nem,tu,wol,ngo,luh;
public static void keBiner(int n){
if(n>1){
keBiner(n/2);
}
System.out.print(n%2);
Hasilbiner.append(n%2);
}
public static void eksepsiInpBiner(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
keBiner(validDes); //parameter
JOptionPane.showMessageDialog(null, des + "Binernya adalah "+Hasilbiner, "hasil konversi"
, JOptionPane.PLAIN_MESSAGE);
Hasilbiner = new StringBuilder();
}
catch (NumberFormatException rrr){
JOptionPane.showMessageDialog(null, des +"bukan angka!!"
+"\nMasukkan angka saja!!");
eksepsiInpBiner();
}
}
public static void keHexa(int n){
char[] daftarHexa={'0','1','2','3','4','5','6','7','8','9','A','B'
+'C','D','E','F'};
if(n>0){
keHexa(n/16);
System.out.print(daftarHexa[n%16]);
hexaHasil.append(daftarHexa[n%16]);
}
}
public static void eksepsiInpHexa(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
keHexa(validDes); //parameter
JOptionPane.showMessageDialog(null, des+"Hexanya adalah "+hexaHasil, "hasil konversi"
, JOptionPane.PLAIN_MESSAGE);
hexaHasil = new StringBuilder();
}
catch (NumberFormatException err){
JOptionPane.showMessageDialog(null, "'"+des +"'"+"bukan angka!!"
+"\nMasukkan angka saja!!");
eksepsiInpHexa();
}
}
public static void keOctal(int n){
char[] daftarOctal={'0','1','2','3','4','5','6','7'};
if(n>0){
keOctal(n/8);
System.out.print(daftarOctal[n%8]);
octalHasil.append(daftarOctal[n%8]);
}
}
public static void eksepsiInpOctal(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
keOctal(validDes); //parameter
JOptionPane.showMessageDialog(null,des + "Oktalnya adalah "+octalHasil, "hasil konversi"
, JOptionPane.PLAIN_MESSAGE);
octalHasil = new StringBuilder();
}
catch (NumberFormatException brr){
JOptionPane.showMessageDialog(null, des +"bukan angka!!"
+"\nMasukkan angka saja!!");
eksepsiInpOctal();
}
}
public static void inputDesJOption(){
des = JOptionPane.showInputDialog("Masukkan Bil Desimalnya= ");
try{
if(des.isEmpty()){
JOptionPane.showMessageDialog(null, "Ga boleh kosong loh yaa!!");
inputDesJOption();
}
}
catch(NullPointerException rrr){
JOptionPane.showMessageDialog(null, "eits, jgn kabur!");
inputDesJOption();
}
}
public static void inpNama(){
name=JOptionPane.showInputDialog(null,
"Masukkan nama anda: ");
try{
if(name.isEmpty()){
JOptionPane.showMessageDialog(null,
"Hoee, Nama tidak boleh kosong!!");
inpNama();//kembali input nama
}
else{
for(int p=0;p<name.length();p++){
if(!Character.isLetter(name.charAt(p))){
JOptionPane.showMessageDialog(null, "Hooe, Tulisannya ga boleh 4L4Y ");
inpNama(); //kembali input nama
}
}
}
}
catch(NullPointerException npe){
JOptionPane.showMessageDialog(null,
"Harap diisi Nama dulu dong!!");
inpNama();//kembali input nama
}
}
public static void inpGender(){
jk=JOptionPane.showInputDialog("Jenis Kelamin");
try{
if(jk.isEmpty()){
JOptionPane.showMessageDialog(null, "Isi dahulu ya!");
inpGender();
}
}
catch (NullPointerException npt){
JOptionPane.showMessageDialog(null, "Jangan kabur dong, diisi dulu");
inpGender();
}
if ("Laki-laki".equals(jk)){
gender=" saudara, ";
}
else{
if("Perempuan".equals(jk)){
gender=" saudari, ";
}
else{
JOptionPane.showMessageDialog(null, "isinya hanya Laki-laki dan Perempuan ya");
inpGender();
}
}
}
//terbilang
String[] angka={"","Satu","Dua","Tiga","Empat","Lima","Enam","Tujuh"
+"delapan","Sembilan","Sepuluh","Sebelas"};
private String ucap(int x){
String bilang="";
int y = x / 100;
if(y > 0){
bilang = angka[y]+" Ratus ";
if(y == 1) bilang="Seratus";
x%=100;
}
if(x<12)bilang += angka[x];
else{
y=x/10;
x%=10;
if(y==1)
bilang +=angka[x] + "Belas";
else
bilang +=angka[y] + "Puluh"+angka[x];
}
return bilang;
}
private String terbilang(long x){
int y;
String bilang="";
String [] satuan={""," Ribu "," Juta "," Milyar "," Trilyun "
+" Quadrilyun "," Quintilyun "};
if(x > Math.pow(10,20)) return "Bilangan terlalu besar";
for(int a=6;a>0;a--){
y = (int) (x/Math.pow(10, a*3));
if(y > 0){
if(y==1 && a ==1) bilang += " Seribu "; else bilang += ucap(y) + satuan[a];
} x %= Math.pow(10, a*3);
}
bilang+=ucap((int)x);
return bilang;
}
public static void outTerbilang(){
hi = JOptionPane.showInputDialog("Masukkan Bilangan : ");
try{
if(hi.isEmpty()){
JOptionPane.showMessageDialog(null, "Tidak Boleh Kosong!");
outTerbilang();
}
}
catch(NullPointerException err){
JOptionPane.showMessageDialog(null, "Hayoo jangan kabuur");
outTerbilang();
}
JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(hi)),"TERBILANG", JOptionPane.INFORMATION_MESSAGE);
}
public static void hasilPecahan(int desimal){
String str=JOptionPane.showInputDialog("Masukkan bilangan yang dipecah : ");
desimal=Integer.parseInt(str);
ji=desimal/100000;
desimal%=100000;
ro=desimal/50000;
desimal%=50000;
lu=desimal/10000;
desimal%=10000;
pat=desimal/5000;
desimal%=5000;
mo=desimal/1000;
desimal%=1000;
nem=desimal/500;
desimal%=500;
tu=desimal/100;
desimal%=100;
wol=desimal/50;
desimal%=50;
ngo=desimal/10;
desimal%=10;
luh=desimal/1;
desimal%=1;
}
public static void eksepsiPecahan(){
try{
hasilPecahan(validDes);
JOptionPane.showMessageDialog(null, "Jumlah seratus ribuan ="+ji
+"\nJumlah lima puluh ribuan = "+ro
+"\nJumlah sepuluh ribuan = "+lu
+"\nJumlah lima ribuan= "+pat
+"\nJumlah seribuan= " +mo
+"\nJumlah lima ratusan= " +nem
+"\nJumlah seratusan= " +tu
+"\nJumlah lima puluhan= " +wol
+"\nJumlah puluhan= " +ngo
+"\nJumlah satuan= " +luh
, "PECAHAN", JOptionPane.INFORMATION_MESSAGE);
}
catch (NumberFormatException ggg){
JOptionPane.showMessageDialog(null, des +
"bukan angka!" + "\n Masukkan angka saja!");
eksepsiPecahan();
}
}
public static void Menukembali(){
inpNama();
inpGender();
}
public static void menuJOption(){
// text untuk tombol
inpNama();
inpGender();
String[] pilihan = {"BINER", "HEXA", "OKTAL","TERBILANG", "PECAHAN", "KEMBALI", "<<KELUAR>>"};
//"infinite" loop, selesai jika System.exit(0)
while (true){
int response = JOptionPane.showOptionDialog(
null // tengah window.
, "Selamat Datang"+gender+""+name+"!"
+ "\nPilih Konversi Bilangan dibawah ini?"// Pesan
, "Konversi Bilangan" //Judul Bar
, JOptionPane.YES_NO_OPTION //tipe pilihan
, JOptionPane.PLAIN_MESSAGE //tipe pesan
, null //Icon(none)
, pilihan //tombol text
, null //label tombol default
);
//menggunakan switch untuk mengecek tombol yang ditekan.
switch (response){
case 0:
eksepsiInpBiner();
break;
case 1:
eksepsiInpHexa();
break;
case 2:
eksepsiInpOctal();
break;
case 3:
outTerbilang();
case 4:
eksepsiPecahan();
case 5:
Menukembali();
case 6:
case -1:
System.exit(0);
//antara tombol (3) dan close box(-1) ditangani disini.
default:
//Jika kita disini ada kesalahan,
JOptionPane.showMessageDialog(null,
"response salah" + response); break;
}
}
}
public static void main(String[] args){
menuJOption();
}
}
hasil :
Tampilan Awal
Isi Nama
Apabila nama di cancel atau dikosongi
inputan nama tidak boleh seperti ini
kalo input nama seperti di atas maka
setelah input nama sudah benar,
maka akan ada tampilan seperti ini,
Lalu, insan isi dengan Perempuan ya, soalnya insan kan perempuan. :)
kalo jenis kelaminnya bukan Perempuan atau Laki-laki maka tampilannya
Kalo di cancel
and then, tampilannya seperti ini
disini Insan inputan desimalnya 14
Tampilan binernya
Tampilan Hexanya
Tampilan Oktalnya
Lalu tampilan terbilangnya adalah
untuk tampilan Pecahannya sbb
kan di tampilan biner,hexa,dan octal ada button cancelnya, kalo ditekan tampilan sbb
lalu diatas juga ada button kembali, kalau di tekan tampilannya kembali ke awal:
kalo keluar, yaa keluar dari program.
maaf kalo rada berantakan, efek sudah malam. :D
besok kalo ada kuota lagi Insan edit deh.
tapi ini sudah lumayan jelas kaan?? :p
saran dibutuhkan yaa. :)