package Java_Praktek;
import javax.swing.JOptionPane;
public class Menu {
   private static
String name;
   private static
String des;
   private static
String gender;
   private static
String kelamin;
   private static int
validDes;
   static
StringBuilder binerHasil= new StringBuilder();
   static
StringBuilder hexaHasil= new StringBuilder();
   static StringBuilder
oktalHasil= new StringBuilder();
   static String sc;
   
 public static void
keBiner(int n) {
        if (n > 1)
{
            keBiner(n
/ 2);
        }
       
System.out.print(n % 2);
       
binerHasil.append(n % 2);
    }
    public static void
keHexa(int n) {//int n : parameter
        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
keOktal(int n) {
        char[]
daftarOktal = {'0', '1', '2', '3', '4', '5', '6', '7'};
        if (n > 0)
{
            keOktal(n
/ 8);
           
System.out.print(daftarOktal[n % 8]);
           
oktalHasil.append(daftarOktal[n % 8]);
        }
    }
     
public static void inputDesJOption(){
       
des=JOptionPane.showInputDialog("Masukkan Bilangan Desimal :
");
        try{
           
if(des.isEmpty()){
                JOptionPane.showMessageDialog(null,
"Bilangan Desimal harus diisi !!");
               
inputDesJOption();
            }
        }
       
catch(NullPointerException npa){
           
JOptionPane.showMessageDialog(null, "Harus diisi yaa !!");
            inputDesJOption();
        }
    }
    public static void
outHasilBiner() {
       
inputDesJOption();
        try {//untuk
melakukan penanganan kesalahan
            validDes =
Integer.parseInt(des);
           
System.out.print("\n Bilangan desimal : " + des + " jika
dijadikan Biner hasilnya : ");
           
keBiner(validDes);
           
System.out.println("\n");
           
JOptionPane.showMessageDialog(null, "Bilangan desimal : " +
des + " jika dijadikan Biner hasilnya : " + binerHasil, "HASIL
KONVERSI", JOptionPane.PLAIN_MESSAGE);
            // reset
object binerHasil
            binerHasil
= new StringBuilder();
        
        } catch
(NumberFormatException nfe) {
           
JOptionPane.showMessageDialog(null, "'" + des + "'"
                    +
" .... bukan angka !!"
                    +
"\nMasukkan angka saja !!");
           
outHasilBiner();
        }
    }
    public static void
outHasilHexa() {
       
inputDesJOption();
        try {//untuk
melakukan penanganan kesalahan
            validDes =
Integer.parseInt(des);
           
System.out.print("\n Bilangan desimal : " + des + " jika
dijadikan Hexa hasilnya : ");
           
keHexa(validDes);
           
System.out.println("\n");
            JOptionPane.showMessageDialog(null,
"Bilangan desimal : " + des + " jika dijadikan Hexa hasilnya :
" + hexaHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
            hexaHasil
= new StringBuilder();
        } catch
(NumberFormatException nfe) {
           
JOptionPane.showMessageDialog(null, "'" + des + "'"
                    +
" .... bukan angka !!"
                    +
"\nMasukkan angka saja !!");
           
outHasilHexa();
        }
    }
    public static void
outHasilOktal() {
       
inputDesJOption();
        try {//untuk
melakukan penanganan kesalahan
            validDes =
Integer.parseInt(des);
           
System.out.print("\n Bilangan desimal : " + des + " jika
dijadikan Oktal hasilnya : ");
           
keOktal(validDes);
           
System.out.println("\n");
           
JOptionPane.showMessageDialog(null, "Bilangan desimal : " +
des + " jika dijadikan Oktal hasilnya : " + oktalHasil, "HASIL
KONVERSI", JOptionPane.PLAIN_MESSAGE);
            oktalHasil
= new StringBuilder();
        } catch
(NumberFormatException nfe) {
           
JOptionPane.showMessageDialog(null, "'" + des + "'"
                    +
" .... bukan angka !!"
                    +
"\nMasukkan angka saja !!");
           
outHasilOktal();
        }
    }  
        
//menampilkan input dialog nama
 public static void
inpNama(){
       
name=JOptionPane.showInputDialog("Masukkan nama Anda : ");
        try{
           
if(name.isEmpty()){
               
JOptionPane.showMessageDialog(null, "Nama tidak boleh kosong
!!");
               
inpNama();
            }
        }
       
catch(NullPointerException npe){
           
JOptionPane.showMessageDialog(null, "Harap diisi nama dulu doonk
!!");
            inpNama();
        }
    }
   
 //menampilkan input
dialog jenis Kelamin (gender)
    public static void
jenisKelamin(){
       
gender=JOptionPane.showInputDialog("Masukkan Jenis Kelamin Anda
(cowok/cewek) : ");
        try{
           
if(gender.isEmpty()){
               
JOptionPane.showMessageDialog(null, "Harus diisi lho yaa .... Jenis
Kelamin ???");
               
jenisKelamin();
            }
        }
       
catch(NullPointerException npt){
           
JOptionPane.showMessageDialog(null, "Apa jenis kelamin kamu
???");
            jenisKelamin();
        }
        if
("cowok".equals(gender)) {
           
kelamin="Saudara, ";
        }
        else{
           
if("cewek".equals(gender)){
               
kelamin="Saudari, ";
            }
            else{
               
JOptionPane.showMessageDialog(null, "Hanya bisa diisi cowok dan
cewek saja !!");
               
jenisKelamin();
            }
        }
        
    }
  
    //Terbilang
    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
outTerbilang() {
        sc =
JOptionPane.showInputDialog("Masukan Bilangan yang akan disebut : ");
        try {
            if
(sc.isEmpty()) {
               
JOptionPane.showMessageDialog(null, "Waa.. mana bilangannya ?? Isi
dulu yaa.. !!");
               
outTerbilang();
            } else {
               
JOptionPane.showMessageDialog(null, new Menu().terbilang(new Long(sc)),
"TERBILANG", JOptionPane.INFORMATION_MESSAGE);
            }
        } catch
(NullPointerException not) {
           
JOptionPane.showMessageDialog(null, "Jangan keluar dulu, harus
diisi itunya.. !!");
           
outTerbilang();
        } catch
(NumberFormatException nae) {
           
JOptionPane.showMessageDialog(null, "Hey '" + sc +
"'"
                    +
" .... bukan angka !!"
                    +
"\nMasukkan angka saja !!");
           
outTerbilang();
        }
    }
  
    public static void
hasilPecahan() {
        int desimal;
        String str =
JOptionPane.showInputDialog("Masukkan bilangan yang akan dipecah :
");
        try {
            if
(str.isEmpty()) {
               
JOptionPane.showMessageDialog(null, "Kok kosong ?? Isi dulu ya..
!!");
               
hasilPecahan();
            } else {
               
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);
            }
        } catch
(NullPointerException not) {
           
JOptionPane.showMessageDialog(null, "Eitss mau kemana ?? Isi dulu
bilangannya.. !!");
           
hasilPecahan();
        } catch
(NumberFormatException nae) {
           
JOptionPane.showMessageDialog(null, "Hey '" + str +
"'"
                    + " .... bukan angka !!"
                    +
"\nMasukkan angka saja !!");
           
hasilPecahan();
        }
    }
    
public static void kembaliMenu(){
        inpNama();
       
jenisKelamin();
    }
   
 public static void
menuJOption(){
        inpNama();
       
jenisKelamin();
        String[]
pilihan = {"BINER", "HEXA", "OKTAL",
"TERBILANG", "PECAHAN", "KEMBALI",
"KELUAR"};
        while (true) {
            int
response = JOptionPane.showOptionDialog(
                               null                       
                            
, "Selamat Datang "+kelamin+name+" !!"
                                + "\nPilih
Konversi Bilangan dibawah ini?"// Pesan
                            
, "Konversi Bilangan"               // Judul di Tittlebar
                            
, JOptionPane.YES_NO_OPTION  //
Tipe Option
                            
, JOptionPane.PLAIN_MESSAGE  //
Tipe Pesan
                            
, null                       
                            
, pilihan     
                             , null    // Default button
                          
);
           
switch(response){
                case
0:
                   
outHasilBiner();
                   
break;
                case
1:
                   
outHasilHexa();
                   
break;
                case
2:
                   
outHasilOktal();
                   
break;
                case
3:
                   
outTerbilang();
                   
break;
                case
4:
                   
hasilPecahan();
                   
break;
                case
5:
                   
kembaliMenu();
                   
break;
                case
6:
                case
-1:
                   
System.exit(0);
                default:
                   
JOptionPane.showMessageDialog(null, "response salah"
                                                   
+ response); break;
            }
        }
    }
    public static void
main(String[] args){
        menuJOption();
    }
}
Hasilnya …….