Menu konversi menggunakan JOption

Sore kawan ... aku mau berbagi informasi dan script/coding untuk pengguna'an atau pembuatan menu konversi pada jav.. lebih tepatnya menggunakan 'JOption' ..


Bimbingan: Mr. Hadi W.

Perhatika Codingnya :
/*...*/
package Praktek1;
/**
 *
 * @author dina

 */
import javax.swing.JOptionPane;
public class MenuDariJOption {
    private static String name;
    private static String des;
    private static int validDes;
    private static String gender;
    private static String kelamin;
    static StringBuilder hasilBiner= new StringBuilder();
    static StringBuilder hasilHexa= new StringBuilder();
    static StringBuilder hasilOctal= new StringBuilder();
    static String sc;
  
    public static  void keBiner (int n) {
        if(n>1){
            keBiner(n/2);
        }
        System.out.print(n%2);
    hasilBiner.append(n%2);
    }
    public static  void keOctal (int n) {
        if(n>1){
            keOctal(n/8);
        }
        System.out.print(n%8);
    hasilOctal.append(n%8);

    }
    public static void keHexa(int n){ // konversi des ke hexa
    char[] daftarHexa={'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D',
        'E','F'};
    if(n>1){
        keHexa(n/16);
      
    }
    System.out.print(daftarHexa[n%16]);
    hasilHexa.append(daftarHexa[n%16]);

    }
    public static  void inputDesJOption () {
    des=JOptionPane.showInputDialog("Masukkan Bilangan Desimal=");
    }
    public static void eksepsiInpBiner(){
        inputDesJOption();
        try {
            validDes=Integer.parseInt(des);
            System.out.print("\nDesimal dari "+des+",Binernya adalah = ");
            keBiner(validDes);
            System.out.println("\n");
             JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+" Binernya Adalah: "+hasilBiner, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
        }catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " .... Bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outHasilBiner();
        }
    }


    public static  void outHasilBiner   () {
        eksepsiInpBiner();
    }
    public static void eksepsiInpOctal(){
        inputDesJOption();
        try {
            validDes=Integer.parseInt(des);
            System.out.print("\nDesimal dari "+des+",Octalnya adalah = ");
            keOctal(validDes);
            System.out.println("\n");
             JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+" octalnya Adalah: "+hasilOctal, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
        }catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " .... Bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outHasilOctal();
        }
    }

    public static  void outHasilOctal   () {
        eksepsiInpOctal();
    }
    public static void eksepsiInpHexa(){
        inputDesJOption();
        try {
            validDes=Integer.parseInt(des);
            System.out.print("\nDesimal dari "+des+",Hexanya adalah = ");
            keHexa(validDes);
            System.out.println("\n");
             JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+" Hexanya Adalah: "+ hasilHexa, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
        }catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " .... Bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outHasilHexa();
        }
    }

    public static  void outHasilHexa   () {
        eksepsiInpHexa();
    }
    public static  void inpNama         () {
        name=JOptionPane.showInputDialog("Masukkan Nama Anda:");
        try{
            if(name.isEmpty()){
                JOptionPane.showMessageDialog(null,"Eitss,,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 jenisKelamin(){
        gender=JOptionPane.showInputDialog("Masukkan Jenis Kelamin Anda (Laki-Laki/Perempuan) "
                +"Besar dan kecilnya huruf berpengaruh :");
        try{
            if(gender.isEmpty()){
                JOptionPane.showMessageDialog(null, " Loe Cowok atau Cewek ? ");
                jenisKelamin();
            }
        }
        catch(NullPointerException npt){
            JOptionPane.showMessageDialog(null, "Jenis Kelamin harus diisi, jangan dilewati");
            jenisKelamin();
        }
        if ("Laki-Laki".equals(gender)) {
            kelamin="Abang, ";
        }
        else{
            if("Perempuan".equals(gender)){
                kelamin="Kak, ";
            }
            else{
                JOptionPane.showMessageDialog(null, "Hanya bisa diisi Laki-Laki dan Perempuan saja");
                jenisKelamin();
            }
        }
      
    }
  
    //menampilkan 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 "};
        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("Masukkan Bilangan : ");
    JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
    }
    //Untuk Pecahan
    public static void bilPecahan(){
    int dec;
      
        String str=JOptionPane.showInputDialog("Masukkan bilangan yang ingin dipecah : ");
        dec=Integer.parseInt(str);
        int satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan, sepuluh, sebelas, duabelas, tigabelas;
      
        satu=dec/100000;
        dec%=100000;
      
        dua=dec/50000;
        dec%=50000;
    
       tiga=dec/10000;
        dec%=10000;
      
        empat=dec/5000;
        dec%=5000;
      
    
      
        lima=dec/1000;
        dec%=1000;
      
        enam=dec/500;
        dec%=500;
      
    
        tujuh=dec/100;
        dec%=100;
      
        delapan=dec/50;
        dec%=50;
      
        sembilan=dec/1;
        dec%=1;
  
  
            JOptionPane.showMessageDialog(null,"Banyaknya seratus ribuan    = "+satu
                                        +"\nBanyaknya lima puluh ribuan     = "+dua
                                        +"\nBanyaknya sepuluh ribuan        = "+tiga
                                        +"\nBanyaknya lima ribuan           = "+empat
                                        +"\nBanyaknya seribuan              = "+lima
                                        +"\nBanyaknya lima ratusan          = "+enam
                                        +"\nBanyaknya seratusan             = "+tujuh
                                        +"\nBanyaknya lima puluhan          = "+delapan
                                        +"\nBanyaknya satuan                = "+sembilan
                                        , "PECAHAN", JOptionPane.INFORMATION_MESSAGE);
    }


    public static  void menuJOption     () {
        //text untuk tombol
        inpNama();
        jenisKelamin();
        String[] pilihan={"Biner","Hexa","Oktal","Kembali","Terbilang","Pecahan","<<Keluar>>"};
        //"infinite" loop,selesai jika System.exit(0)
        while(true){
            int response=JOptionPane.showOptionDialog(null,//tengahwindow
                                    "Welcome " +kelamin +name+"!!"
                                     +"\nPilih Konversi Bilangan dibawah ini?"
                                     ,"Konversi Bilangan"
                                     ,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:
                    outHasilBiner();
                    break;
                case 1:
                    outHasilHexa();
                    break;
                case 2:
                    outHasilOctal();
                    break;
                case 3:
                    inpNama();
                     break;
                case 4:
                    outTerbilang();
                    break;
                case 5:
                    bilPecahan();
                    break;
                case 6:
                case -1:
                    //antara tombol (3) dan close box(-1) ditangani disini
                    System.exit(0);
              
                default:
                    //jika kita ada kesalahan
                    JOptionPane.showMessageDialog(null, "response tak terduga"
                            + response);break;
            }
        }
    }
    public static  void main(String[] args){
        menuJOption();
    }
}
berikut hasil menunya :
>> input nama : apabila nama kosong, akan ada pesan :

 Setelah nama di isi
 >> Masukkan Gender

>>Apabila gender kosong :
>>Pilih menu yang di inginkan, miaslnya Hexa :

 >>Lalu inputkan angka:

>>JIka Bilangan yg di inputkan kosong :

>> Jika ingin menampilkan nilai dengan bilangan, pilih menu terbilang, dan hasilnya :
 >>Jika ingin menu pecahan, maka tinggal pilih PECAHAN :






Comments