Konversi Bilangan Menggunakan Menu JOption
Kali ini saya akakn men-shar hasil belajar saya di kelas,yaitu tentang java.
Project ini menggunakan menu dari JOptionPane.
Jadi kita mengkonversi bilangan yg interface nya menggunakan dialog dari JOptionPane.
Dan coding nya juga menggunakan menu dari JOption.
Caranya :
Bukalah terlebih dahulu Netbeans nya.
Kemudian,buat JavaProject. Setelah itu buatlah packages di dalam JavaProject. Lalu buatlah Java Class di dalam Packages.
Setelah itu, tuliskan coding berikut ini :
package project.java;
import javax.swing.JOptionPane;
/**
*
* @author henis yus
eva
*/
public class MenuDariJOption {
private static
String name;
private static
String des;
private static int
validDes;
static String
kelamin;
static String
inpTerbilang;
static
StringBuilder hasilBiner = new StringBuilder();
static
StringBuilder hasilHexa = new StringBuilder();
static
StringBuilder hasilOktal = new StringBuilder();
public static void
keBiner(int n) {
if(n>1) {
keBiner(n/2);
}
System.out.print(n%2);
hasilBiner.append(n % 2);
}
public static void
Hexa(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>1){
Hexa((n -
sisaBagi) / 16);
System.out.print(daftarHexa[n%16]);
hasilHexa.append(n % 16);
}
}
public static void
keOktal(int n) {
char[]
daftarOktal = {'0', '1', '2', '3', '4', '5', '6', '7'};
if (n > 1)
{
keOktal(n
/ 8);
}
System.out.print(daftarOktal[n % 8]);
hasilOktal.append(n % 8);
}
public static void
inputDesJOption() {
des=JOptionPane.showInputDialog("Masukkan "
+
"Bil.Desimalnya = ");
try {
if
(des.isEmpty()) {
JOptionPane.showMessageDialog(null,
"bilangan tidak boleh kosong !");
inputDesJOption();//kembali input nama
}
} catch
(NullPointerException npe) {
JOptionPane.showMessageDialog(null,
"Harap diisi Bilangan desimalnya dahulu !");
inputDesJOption(); }//kembali input bil desimal
}
public static void
inpKelamin() {
kelamin =
JOptionPane.showInputDialog("Masukkan"
+
"Jenis Gender anda laki-laki/perempuan :");
try {
if
(kelamin.isEmpty()) {
JOptionPane.showMessageDialog(null,
"Jenis Gender tidak boleh kosong !");
inpKelamin();//kembali input kelamin
}
} catch
(NullPointerException npe) {
JOptionPane.showMessageDialog(null,
"Harap diisi Gender anda dahulu !");
inpKelamin();//kembali input kelamin
}
if
("laki-laki".equals(kelamin)) {
kelamin =
"Mr ";
} else {
if
("perempuan".equals(kelamin)) {
kelamin = "Ms ";
} else {
JOptionPane.showMessageDialog(null, "Hanya perempuan atau laki -
laki");
inpKelamin();
}
}
}
public static void
eksepsiInpBiner() {
inputDesJOption();
try {
//konsepnya seperti if dan else ------ try-catch-catch----finally
validDes =
Integer.parseInt(des);
System.out.print("\nDesimal dari " + des
+
", Binernya adalah = ");
keBiner(validDes);
System.out.println();
JOptionPane.showMessageDialog(null, "Bilangan desimal :" + des
+
" maka binernya adalah :" + hasilBiner, "KONVERSI
BILANGAN", JOptionPane.PLAIN_MESSAGE);
hasilBiner
= new StringBuilder();
} catch
(NumberFormatException nfe) {// dirun saat kesalahan formatnumber
JOptionPane.showMessageDialog(null, des
+
"bukan angka !"
+
"\nMasukkan angka saja !");
eksepsiInpBiner();
}
}
public static void
eksepsiInpHexa() {
inputDesJOption();
try {
//konsepnya seperti if dan else ------ try-catch-catch----finally
validDes = Integer.parseInt(des);
System.out.print("\nDesimal dari " + des
+
", Hexanya adalah = ");
Hexa(validDes);
System.out.println();
JOptionPane.showMessageDialog(null, "Bilangan desimal :" + des
+
" maka hexanya adalah :" + hasilHexa, "KONVERSI BILANGAN",
JOptionPane.PLAIN_MESSAGE);
hasilHexa
= new StringBuilder();
} catch
(NumberFormatException nfe) {// dirun saat kesalahan formatnumber
JOptionPane.showMessageDialog(null, des
+
"bukan angka !"
+
"\nMasukkan angka saja !");
eksepsiInpHexa();
}
}
public static void
eksepsiInpOktal() {
inputDesJOption();
try {
//konsepnya seperti if dan else ------ try-catch-catch----finally
validDes =
Integer.parseInt(des);
System.out.print("\nDesimal dari " + des
+
", Oktalnya adalah = ");
keOktal(validDes);
System.out.println();
JOptionPane.showMessageDialog(null, "Bilangan desimal :" + des
+
" maka oktalnya adalah :" + hasilOktal, "KONVERSI
BILANGAN", JOptionPane.PLAIN_MESSAGE);
hasilOktal = new StringBuilder();
} catch
(NumberFormatException nfe) {// dirun saat kesalahan formatnumber
JOptionPane.showMessageDialog(null, des
+
"bukan angka !"
+
"\nMasukkan angka saja !");
eksepsiInpOktal();
}
}
public static void
outHasilBiner() {
eksepsiInpBiner();
}
public static void
outHasilHexa() {
eksepsiInpHexa();
}
public static void
outHasilOktal() {
eksepsiInpHexa();
}
public static void
inpNama() {
name =
JOptionPane.showInputDialog("Masukkan"
+
"Nama Anda :");
try {
if
(name.isEmpty()) {
JOptionPane.showMessageDialog(null,
"nama tidak boleh
kosong !");
inpNama();//kembali input nama
}
} catch
(NullPointerException npe) {
JOptionPane.showMessageDialog(null,
"Harap diisi Nama dahulu !");
inpNama();//kembali input nama
} catch
(NumberFormatException nfe) {// dirun saat kesalahan formatnumber
JOptionPane.showMessageDialog(null, name
+
"bukan karakter !"
+
"\nMasukkan karakter saja !");
inpNama();
}
}
// coding
selanjutnya untuk konversi bilangan pecahan dan terbilang
String[] angka = {"", "Satu",
"Dua", "Tiga",
"Empat", "Lima", "Enam",
"Tujuh", "Delapan", "Sembilan",
"Sepuluh", "Sebelas"};
private String
keTerbilang(int a) {
String bilang
= "";
int b = a /
100;
if (b > 0)
{
bilang =
angka[b] + " Ratus ";
if (b ==
1) {
bilang
= "Seratus ";
}
a %= 100;
}
if (a < 12)
{
bilang +=
angka[a];
} else {
b = a /
10;
a %= 10;
if (b ==
1) {
bilang
+= angka[a] + " Belas";
} else {
bilang += angka[b] + " Puluh " +
angka[a];
}
}
return bilang;
}
private String
terbilang(long a) {
int b;
String bilang
= "";
String[]
satuan = {"", " Ribu ", " Juta ", " Milyar
", " Trilyun ", " Quadrilyun ", " Quintilyun
"};
if (a >
Math.pow(10, 20)) {
return
"Bilangan terlalu besar";
}
for (int i =
6; i > 0; i--) {
b = (int)
(a / Math.pow(10, i * 3));
if (b >
0) {
if (b
== 1 && i == 1) {
bilang += " Seribu ";
} else
{
bilang += keTerbilang(b) + satuan[i];
}
}
a %=
Math.pow(10, i * 3);
}
bilang +=
keTerbilang((int) a);
return bilang;
}
public static void
outTerbilang() {
inpTerbilang =
JOptionPane.showInputDialog("Masukan Bilangan yang akan disebut : ");
JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new
Long(inpTerbilang)),
"TERBILANG", JOptionPane.INFORMATION_MESSAGE);
}
public static void
hasilPecahan() {
int desimal;
String str =
JOptionPane.showInputDialog("Masukkan bilangan yang akan dipecah :
");
desimal =
Integer.parseInt(str);
int satu, dua,
tiga, empat, lima, enam, tujuh, delapan, sembilan, sepuluh, sebelas, duabelas,
tigabelas;
satu = desimal
/ 100000;
desimal %=
100000;
dua = desimal
/ 50000;
desimal %=
50000;
tiga = desimal
/ 20000;
desimal %=
20000;
empat =
desimal / 10000;
desimal %=
10000;
lima = desimal
/ 5000;
desimal %=
5000;
enam = desimal
/ 2000;
desimal %= 2000;
tujuh =
desimal / 1000;
desimal %=
1000;
delapan =
desimal / 500;
desimal %=
500;
sembilan =
desimal / 200;
desimal %=
200;
sepuluh =
desimal / 100;
desimal %=
100;
sebelas =
desimal / 50;
desimal %= 50;
duabelas =
desimal / 10;
desimal %= 10;
tigabelas =
desimal / 1;
desimal %= 1;
JOptionPane.showMessageDialog(null, "Jumlah seratus ribuan = "
+ satu
+ "\nJumlah lima puluh ribuan =
" + dua
+
"\nJumlah dua puluh ribuan = " + tiga
+
"\nJumlah sepuluh ribuan = " + empat
+
"\nJumlah lima ribuan = " + lima
+
"\nJumlah dua ribuan = " + enam
+
"\nJumlah seribuan = " + tujuh
+
"\nJumlah lima ratusan = " + delapan
+
"\nJumlah dua ratusan = " + sembilan
+
"\nJumlah seratusan = " + sepuluh
+
"\nJumlah lima puluhan = " + sebelas
+
"\nJumlah lima satuan = " + duabelas
+
"\nJumlah satuan = " + tigabelas, "PECAHAN",
JOptionPane.INFORMATION_MESSAGE);
}
public static void
menuJOption() {
//...Text untuk
tombol.
inpNama();
inpKelamin();
String[]
pilihan = {"BINER", "HEXA", "OKTAL",
"<< KELUAR >>"};
//..."Infinite" loop, selesai jika System.exit(0)
while (true) {
int
response = JOptionPane.showOptionDialog(
null
//Tengah window.
,
"Met Datang agan/aganwati "+name+" !!"
+ "\nPilih
Konversi Bilangan dibawah ini?" //Pesan
,
"Konversi Bilangan" //Judul Bar
,
JOptionPane.YES_NO_OPTION //tipe pilihan
,
JOptionPane.PLAIN_MESSAGE //tipe pesan
, null
, pilihan
,
null //label tombol default
);
// Menggunakan
switch untuk mengecek tombol yang ditekan.
switch
(response) {
case 0:
outHasilBiner();
break;
case
1:
outHasilHexa();
;
break;
case
2:
outHasilOktal();
;
break;
case
3:
outTerbilang();
;
break;
case
4:
hasilPecahan();
;
break;
case
5:
inpNama();
inpKelamin();
;
break;
case
6:
System.exit(0);
break;
case -1://mengeksekusi keluaran
agar tidak ke default
//antara tombol 3 dan close box -1 ditangani disini
System.exit(0);//keluar looping tapi
default:
//
jika kita disini ada kesalahan
JOptionPane.showMessageDialog(null,
"response salah" + response);
break;
}
}
}
public static void
main(String[] args) {
menuJOption();
}
}
Hasil nya :
1. Akan muncul input dialog dari JoptionPane untuk menginputkan nama anda .
2.Jika di klik "Cancel",maka akan keluar seperti dibawah ini .
3.Jika nama tidak diisi atau kosong,maka akan keluar seperti ini .
4.Maka isilah nama anda terlebih dahulu,lalu klik "OK"
5.Setelah itu akan muncul input dialog,untuk memasukkan Gender Anda.
6.Jika tidak diisi,maka akan muncul :
7.Jika diisi dengan selain perempuan/laki-laki.
maka akan muncul seperti ini.
8.Jadi masukkan perempuan/laki-laki saja.
9.Lalu akan muncul pilihan menu untuk memililih konversi bilangan yg diinginkan.
Disini saya memilih "HEXA"
Pada saat ada input dialog untuk memasukkan bilangan desimalnya,jika tidak diisi/kosong,maka akan muncul seperti ini.
10.Lalu,masukkan bilangan yg mau di konversikan
contoh : 28 , lalu klik ok
11. Maka hasilnya,akan seperti ini.
12.Setelah di klik OK,maka menu akan kembali pada menu konversi bilangan.
13.Jika di klik <<KELUAR>> Maka akan muncul input dialog untuk memasukkan bilangan yg akan disebut.
14.Jika di klik OK, maka akan kembali pada menu konversi bilangan.
Jika anda telah benar-benar selesai mengkonversi bilangan dan ingin keluar,maka klik tanda "X" pada pojok kanan atas dialog.
SELESAI ...
SELAMAT MENCOBA YA !!!