kali ini saya akan membagikan konversi bilangan yang lebih lengkap lagi menggunakan java.didalamnya nanti terdiri 7 menu yaitu :biner,octal,hexa,pecahan,terbilang,kembali dan keluar.langsung aja deh,buat new java class dan beri nama MenuDariJOption.kemudian kotikkan coding berikut :
import javax.swing.JOptionPane;
public class MenuDariJOption {
private static String name;
private static String des;
private static String sc;
private static String P;
static String gender ;
static String kelamin ;
private static int validDes;
static StringBuilder B = new StringBuilder();
static StringBuilder H = new StringBuilder();
static StringBuilder O = new StringBuilder();
private static void keBiner(int n){
if(n>1){
keBiner(n/2);
}
System.out.print(n%2);
B.append(n%2);
}
private static void keHexa (int n){
char [] daftarHexa={'0','1','2','3','4','5','6','7','8','9','A',
'B','C','D','E','F'};
int sisaBagi = n%16;
if (n>0){
keHexa((n - sisaBagi)/16);
}
System.out.print(daftarHexa[n%16]);
H.append(daftarHexa[n % 16]);
}
private static void keOctal (int n) {
char[] daftarOktal = {'0','1','2','3','4','5','6','7'};
int sisaBagi = n%8;
if (n>0) {
keOctal(( n - sisaBagi) / 8 ) ;
System.out.print(n%8);
O.append(n%8);
}
}
private static void inputDesJOption(){
des = JOptionPane.showInputDialog("Masukkan " + "Bil.Desimalnya = ");
try{
if(des.isEmpty()){
JOptionPane.showMessageDialog(null, "Wajib Untuk Diisi !");
inputDesJOption();
}
}catch(NullPointerException err){
JOptionPane.showMessageDialog (null, "Ngisi Dulu donk !");
inputDesJOption();
}
}
private static void ekspresiInpBiner(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+
",Binernya adalah = ");
keBiner(validDes);
System.out.println();
JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des +
" dirubah ke Biner hasilnya : " + B, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
B = new StringBuilder();
}catch(NumberFormatException rrr){
JOptionPane.showMessageDialog(null, des
+" bukan angka!! "
+ "\nMasukkan angka saja!!");
ekspresiInpBiner();
}
}
private static void ekspresiInpOctal(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+
",Octalnya adalah = ");
keOctal(validDes);
System.out.println();
JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des +
" dirubah ke Octal hasilnya : " + O, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
O = new StringBuilder();
}catch(NumberFormatException rre){
JOptionPane.showMessageDialog(null, des
+" bukan angka!! "
+ "\nMasukkan angka saja!!");
ekspresiInpOctal();
}
}
private static void ekspresiInpHexa(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+
",Hexanya adalah = ");
keHexa(validDes);
System.out.println();
JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des +
" dirubah ke Hexa hasilnya : " + H, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
H = new StringBuilder();
}catch(NumberFormatException rrt){
JOptionPane.showMessageDialog(null, des
+" bukan angka!! "
+ "\nMasukkan angka saja!!");
ekspresiInpHexa();
}
}
public static void outHasilBiner(){
ekspresiInpBiner();
}
public static void outHasilOctal(){
ekspresiInpOctal();
}
public static void outHasilHexa(){
ekspresiInpHexa();
}
private static void inpNama(){
name=JOptionPane.showInputDialog("Masukkan " + "Nama Anda :");
try{
if(name.isEmpty()){
JOptionPane.showInputDialog(null, "Nama tidak boleh kosong!!");
inpNama();//kembali input nama
}
}catch(NullPointerException npe){
JOptionPane.showMessageDialog(null,
"Harap diisi Nama dudu donk!!");
inpNama();//kembali input nama
}
}
public static void jenis() {
gender = JOptionPane.showInputDialog("Masukkan jenis kelaminmu ? (agan/aganwati)");
try {
if (gender.isEmpty()) {
JOptionPane.showMessageDialog(null, "Tuliskan jenis kelaminmu!!");
jenis();
}
} catch (NullPointerException npt) {
JOptionPane.showMessageDialog(null, "Harus diisi!!");
jenis();
}
if ("agan".equals(gender)) {
kelamin = "agan, ";
} else {
if ("aganwati".equals(gender)) {
kelamin = "aganwati, ";
} else {
JOptionPane.showMessageDialog(null, "Pilih agan/aganwati saja");
jenis();
}
}
}
String[] angka=
{"","Satu","Dua","Tiga","Empat","Lima","Enam","Tujuh","Delapan","Sembilan","Sepuluh","Sebelas"};
private String sebut(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 i=6;i>0;i--){
y = (int) (x/Math.pow(10, i*3));
if(y > 0){
if(y==1 && i==1) bilang += " Seribu "; else
bilang += sebut(y) + satuan[i];
} x %= Math.pow(10, i*3);
}
bilang+=sebut((int)x);
return bilang;
}
public static void Terbilang(){
sc = JOptionPane.showInputDialog("Masukkan Nilai : ");
JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
}
public static void pecahan(){
int desimal;
String str=JOptionPane.showInputDialog("Masukkan Nilai");
desimal=Integer.parseInt(str);
int j100rbu, j50rbu, j20rbu, j10rbu, j5rbu, j2rbu, j1rbu, j5rtus, j2rtus, j1rtus, j50, j10, j1;
j100rbu=desimal/100000;
desimal%=100000;
j50rbu=desimal/50000;
desimal%=50000;
j20rbu=desimal/20000;
desimal%=20000;
j10rbu=desimal/10000;
desimal%=10000;
j5rbu=desimal/5000;
desimal%=5000;
j2rbu=desimal/2000;
desimal%=2000;
j1rbu=desimal/1000;
desimal%=1000;
j5rtus=desimal/500;
desimal%=500;
j2rtus=desimal/200;
desimal%=200;
j1rtus=desimal/100;
desimal%=100;
j50=desimal/50;
desimal%=50;
j10=desimal/10;
desimal%=10;
j1=desimal/1;
desimal%=1;
JOptionPane.showMessageDialog(null,"Jumlah uang seratus ribu = "+j100rbu+
'\n'+"Jumlah uang lima puluh ribu = "+j50rbu+
'\n'+"Jumlah uang dua puluh ribu = "+j20rbu+
'\n'+"Jumlah uang sepuluh ribu = "+j10rbu+
'\n'+"Jumlah uang lima ribu = "+j5rbu+
'\n'+"Jumlah uang dua ribu = "+j2rbu+
'\n'+"Jumlah uang seribu = "+j1rbu+
'\n'+"Jumlah uang lima ratus = "+j5rtus+
'\n'+"Jumlah uang dua ratus = "+j2rtus+
'\n'+"Jumlah uang seratus = "+j1rtus+
'\n'+"Jumlah uang lima puluh = "+j50+
'\n'+"Jumlah uang lima puluh = "+j10+
'\n'+"Jumlah uang lima puluh = "+j1
);
}
public String konversi (int angka){
String [] bilangan ={"","satu","dua","tiga","empat","lima","enam","tujuh","delapan","sembilan","sepuluh","sebelas"};
String temp=" ";
if (angka<12){
temp = "" + bilangan[angka];
}
else if(angka<20){
temp = konversi(angka-10) + " belas ";
}
else if(angka<100){
temp = konversi(angka/10) + " puluh " + konversi(angka%10);
}
else if(angka<200){
temp = " seratus " + konversi(angka-100);
}
else if(angka<1000){
temp = konversi(angka/100) + " ratus " + konversi(angka%100);
}
else if(angka<2000){
temp = " seribu "+ konversi(angka-1000);
}
else if(angka<1000000){
temp = konversi(angka/1000) + " ribu " + konversi (angka%1000);
}
return temp;
}
private static void menuJOption() {
//... Text untuk tombol
inpNama();
jenis();
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
,"Met Datang "+kelamin+" "+name+" !! "
+"\nPilih Konversi Bilangan dibawah ini?"//Pesan
,"Konversi Bilangan" //Judul Bar
,JOptionPane.YES_NO_OPTION // tipe pilihan
,JOptionPane.PLAIN_MESSAGE //tipe pilihan
,null //icon (none)
,pilihan //tombol text
,null // label tombol default
);
//menggunakan switch untuk mengecek tombol yg ditekan
switch (response){
case 0:
outHasilBiner();
break;
case 1:
outHasilHexa();
break;
case 2:
outHasilOctal();
break;
case 3:
Terbilang();
break;
case 4:
pecahan();
break;
case 5:
menuJOption();
break;
case 6:
case -1:
//... antara tombol (6) dan close box(-1) ditangani disini.
System.exit(0); // keluar looping
default:
//...Jika kita disini ada kesalahan,
JOptionPane.showMessageDialog(null,
"response salah "+ response);break;
}
}
}
public static void main (String[] args) {
menuJOption();
}
}
setelah mengetikkan coding diatas,jalankan dan hasilnya akan muncul inputan nama seperti ini :
setelah mengetik nama kemudian OK,setelah itu akan muncul inputan kelamin seperti ini :
pada saat menginputkan nama , kelamin atau menu lainnya jika anda klik cancel atau close akan muncul seperti ini (contohnya pada saat menginputkan nama) :
setelah anda mengisi inputan kelamin dan mengeklik OK akan muncul menu seperti ini :
coba klik menu biner akan muncul seperti ini :
dan ketikkan angka desimal,contohnya 53 dan hasilnya seperti ini :
dan jika anda mengeklik OK anda akan dibawa kembali ke menu.sekarang kita coba klik menu terbilang akan muncul seperti ini :
setelah mengklik OK akan muncul hasil seperti ini :
klik OK dan sekarang kita coba menu pecahan :
dan hasilnya seperti ini :
klik OK dan coba menu kembali.jika kita mengeklik menu kembali akan muncul inputan nama ,kelamin dan menu lagi.dan jika anda ingin keluar klik tombol keluar yang ada di menu.Selamat mencoba
Tidak ada komentar:
Posting Komentar