1. buat new java class
2. beri nama MenuDariJOption
3. ketik atau copy coding dibawah ini
import javax.swing.JOptionPane;
public class MenuDariJOption {
private static String name;
private static String des;
private static int validDes;
private static String sc;
private static String JenisKelamin;
private static String gender;
private static String P;
static StringBuilder B = new StringBuilder();
static StringBuilder H = new StringBuilder();
static StringBuilder O = new StringBuilder();
public static void keBiner(int n){
if(n>1){
keBiner(n/2);
}
System.out.print(n%2);
B.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'};
if (n > 1) {
Hexa(n / 16);
}
System.out.print(daftarHexa[n % 16]);
H.append(daftarHexa[n % 16]);
}
public static void Octal (int n){
char[] daftarOctal = {'0', '1', '2', '3', '4', '5', '6', '7'};
if (n > 1) {
Octal(n / 8);
}
System.out.print(daftarOctal[n % 8]);
O.append(n%8);
}
public 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();
}
}
public static void eksepsiInpBiner(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+", Binernya adalah = ");
keBiner(validDes);
System.out.println();
}catch(NumberFormatException err){
JOptionPane.showMessageDialog(null, des +" bukan angka!! " + "\nMasukkan angka saja!!");
eksepsiInpBiner();
}
}
public static void eksepsiInpHexa(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+", Hexanya adalah = ");
Hexa(validDes);
System.out.println();
}catch(NumberFormatException err){
JOptionPane.showMessageDialog(null, des +" bukan angka!! " + "\nMasukkan angka saja!!");
eksepsiInpHexa();
}
}
public static void eksepsiInpOctal(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+", Octalnya adalah = ");
Octal(validDes);
System.out.println();
}catch(NumberFormatException err){
JOptionPane.showMessageDialog(null, des +" bukan angka!! " + "\nMasukkan angka saja!!");
}
}
public static void outHasilBiner(){
eksepsiInpBiner();
}
public static void outHasilHexa(){
eksepsiInpHexa();
}
public static void outHasilOctal(){
eksepsiInpOctal();
}
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 dulu donk!!");
inpNama();//kembali INput nama
}
}
public static void GENDER (){
JenisKelamin=JOptionPane.showInputDialog("Masukkan Jenis Kelamin (L/P) : ");
try{
if(JenisKelamin.isEmpty()){
JOptionPane.showMessageDialog(null, "Wajib di isi!");
GENDER();
}
}
catch(NullPointerException err){
JOptionPane.showMessageDialog(null, "Mohon Diisi dulu!!");
GENDER();
}
if (JenisKelamin.equalsIgnoreCase("L")) {
gender="Mas, ";}
else{
if(JenisKelamin.equalsIgnoreCase("P")){
gender="Mbak, ";
}
else{
JOptionPane.showMessageDialog(null, "Maaf, inputan salah."
+ " Hanya dapat diisi dengan (L/P) !!");
GENDER();
}
}
}
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;
}
public static void menuJOption(){
//... Text untuk tombol.
inpNama();
GENDER();
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.
, "Wellcome "+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
);
//menngunakan swicth untuk mengecek tombol yang 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:
inpNama();
GENDER();
break;
case 6:
System.exit(0);
break;
case -1:
//...antara tombol (3) 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();
}
}
Jika anda sudah benar mengetikkan coding tersebut, maka hasilnya akan seperti ini :
1. untuk inputan nama :
2. untuk inputan Jenis Kelamin :
3. tampilan jika pada inputan jenis kelamin kosong, kemudian ditekan "OK"
4. tampilan jika pada inputan jenis kelamin kosong, kemudian ditekan "Cancel" atau [X]
5. untuk tampilan menu JOption :
6. untuk tampilan input bilangan desimal :
5. untuk tampilan hasil biner :
6. untuk tampilan hasil hexa :
7. untuk tampilan hasil oktal :
8. untuk tampilan inputan terbilang :
9. untuk hasil terbilang :
10. untuk tampilan inputan pecahan :
11. untuk hasil pecahan :
12. dan jika ditekan "<<KEMBALI>>", maka akan dikembalikan pada saat anda mengimputkan nama.
Semoga Bermanfaat :)