Senin, 10 September 2012

Konversi Bilangan Dengan Menggunakan Menu JOption

Hai sobat blogger pada kesempatan ini saya akan memposting coding tentang konversi bilangan menggunakan JOption pada JAVA, dan ini adalah project yg lebih baik dari pada sebelumnya. Ini adalah codingya .. CEKIBROT!!!

import javax.swing.JOptionPane;

public class MenuJoption {
 private static String nama;
    private static String des;
    private static String gender;
    private static String JenisKelamin;
    private static int validDes;
    static StringBuilder BinerHasil= new StringBuilder();
    static StringBuilder HexaHasil= new StringBuilder();
    static StringBuilder OktalHasil= new StringBuilder();
    static String cc;
public static void keBiner(int n){
        if(n>1){
            keBiner(n/2);
    }
        BinerHasil.append(n%2);
        System.out.print(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>0){
        Hexa(n/16);
        HexaHasil.append(n%16);
        System.out.print(daftarHexa[n%16]);
    }
}
   
    public static void Oktal(int n){
    char[] daftarOktal={'0','1','2','3','4','5','6','7'};
    if(n>0){
        Oktal(n/8);
        OktalHasil.append(n%8);
        System.out.print(daftarOktal[n%8]);
    }
}
//Untuk Menginput Bilangan Desimal
    public static void inputDesJOption(){
        des = JOptionPane.showInputDialog("Masukkan "
                + "Bil.Desimalnya = "); 
    }
  public static void eksepsiInpBiner(){
        inputDesJOption();
        try{
            if(des.isEmpty()){
            JOptionPane.showMessageDialog(null,
                    "Jangan dikosongi!");
            eksepsiInpBiner();}
            validDes=Integer.parseInt(des);
            System.out.print("\nDesimal dari "+des+
                    ", Binernya adalah = ");
            keBiner(validDes);
            System.out.println();
       
         ///Untuk Menampilkan konversi di showMessageDialog JOptionPane
         validDes = Integer.parseInt(des);
            JOptionPane.showMessageDialog(null, "Bilangan Desimal : " + des + "  Hexanya adalah :" 
                    + BinerHasil, "HasilKonversi", JOptionPane.PLAIN_MESSAGE);
            BinerHasil = new StringBuilder();
           
        //Untuk mensetting supaya cuma bisa dimasuki angka saja
        }catch(NumberFormatException bbb){
            JOptionPane.showMessageDialog(null, des
                    +" bukan angka!! "
                    +"\nMasukkan Angka !!!!!");
            eksepsiInpBiner();
       
        //Untuk mensetting supaya mengisi /tidak dikosongi
        }catch(NullPointerException jkl){
            JOptionPane.showMessageDialog(null, "Isi terlebih dahulu!");
            eksepsiInpBiner();
        }
    }
   
   
     public static void eksepsiInpHexa(){
        inputDesJOption();
        try{
              
            if(des.isEmpty()){
            JOptionPane.showMessageDialog(null,
                    "Jangan dikosongi !!!!!");
            eksepsiInpHexa();//kembali input bilangan
        }
            validDes=Integer.parseInt(des);
            System.out.print("\nDesimal dari "+des+
                    ", Hexanya adalah = ");
            Hexa(validDes);
            System.out.println();
           
        ///Untuk Menampilkan konversi di showMessageDialog JOptionPane
         validDes = Integer.parseInt(des);
            JOptionPane.showMessageDialog(null, "Bilangan Desimal : " + des + "  Hexanya adalah :" 
                    + HexaHasil, "HasilKonversi", JOptionPane.PLAIN_MESSAGE);
            HexaHasil = new StringBuilder();
           
       
        //Untuk mensetting supaya cuma bisa dimasuki angka saja
        }catch(NumberFormatException rrr){
            JOptionPane.showMessageDialog(null, des
                    +" bukan angka!! "
                    + "\nMasukkan angka saja!!");
            eksepsiInpHexa();
       
        //Untuk mensetting supaya mengisi /tidak dikosongi
        }catch(NullPointerException jkl){
            JOptionPane.showMessageDialog(null, "Isi terlebih dahulu!");
            eksepsiInpHexa();
        }
    }
    
    
     public static void eksepsiInpOktal(){
        inputDesJOption();
        try{
            validDes=Integer.parseInt(des);
            System.out.print("\nDesimal dari "+des+
                    ", Oktalnya adalah = ");
            Oktal(validDes);
            System.out.println();
           
           
        ///Untuk Menampilkan konversi di showMessageDialog JOptionPane
         validDes = Integer.parseInt(des);
            JOptionPane.showMessageDialog(null, "Bilangan Desimal : " + des + "  Oktalnya adalah :" 
                    + OktalHasil, "HasilKonversi", JOptionPane.PLAIN_MESSAGE);
            OktalHasil = new StringBuilder();
           
        //Untuk mensetting supaya cuma bisa dimasuki angka saja
        }catch(NumberFormatException rrr){
            JOptionPane.showMessageDialog(null, des
                    +" bukan angka!! "
                    + "\nMasukkan angka saja!!");
            eksepsiInpOktal();
       
        //Untuk mensetting supaya mengisi /tidak dikosongi
        }catch(NullPointerException asd){
            JOptionPane.showMessageDialog(null, "Isi terlebih dahulu!");
            eksepsiInpOktal();
        }
       
    }

 public static void outHasilBiner(){
           eksepsiInpBiner();
    }

    public static void outHasilHexa(){
            eksepsiInpHexa();
    }
     public static void outHasilOktal(){
            eksepsiInpOktal();
    }
 //Coding Untuk Memasukkan Nama
   public static void inpNama(){
        nama=JOptionPane.showInputDialog("Masukkan "
                + "Nama Anda :");
        try{
        if(nama.isEmpty()){
            JOptionPane.showMessageDialog(null,
                    "Nama tidak boleh kosong!!");
            inpNama();//kembali input nama
        }   
        }
        catch(NullPointerException ttt){
            JOptionPane.showMessageDialog(null,
                    "Harap Nama diisi dulu!!");
            inpNama();//kembali input nama
        }
    }
   
   
//Coding Untuk Jenis Kelamin
    public static void JenisKelamin(){
        gender=JOptionPane.showInputDialog("Pilih Jenis Kelamin Anda !!"
                +"\nL/P");
        try{
                if(gender.isEmpty()){
                    JOptionPane.showMessageDialog(null,
                            "Harap Diisi Jenis Kelamin Anda!!");
                    JenisKelamin();
            }
            }
              catch(NullPointerException qqq){
                  JOptionPane.showMessageDialog(null,
                          "Harap masukkan jenis kelamin anda!!!");
                  JenisKelamin();
            }
            if("L".equals(gender)){
                    JenisKelamin="Mas ";
               }
            else{
                if
                ("P".equals(gender)){
                    JenisKelamin="Mbak ";  
                }
            else{
                JOptionPane.showMessageDialog(null,
                        "Jenis Kelamin Hanya bisa diisi L/P!!"
                        +"\nTidak boleh yang lain!!");
                JenisKelamin();
            }
          }
        }
  
//Untuk menu kembali
    public static void Kembali(){
        inpNama();
        JenisKelamin();
    }
  
 public static void menuJOption(){
    //... Text untuk tombol.
        inpNama();
        JenisKelamin();
        String[] pilihan = {"BINER", "HEXA", "OKTAL","Pecahan","Terbilang","Kembali",
            "<< KELUAR >>"};
    //... "Infinite" loop, selesai jika System.exit(0)
        while (true) {
        int response = JOptionPane.showOptionDialog (
            null        //Tengah window.
            , "Selamat Datang "+JenisKelamin+" "+nama+"  :) "
        + "\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
        );
    //menggunakan switch untuk mengecek tombol yang ditekan
        switch (response){
            case 0:
                outHasilBiner();
                break;
            case 1:
                 outHasilHexa();
                ;
                break;
            case 2:
                 outHasilOktal();
                ;
                break;
            case 3:
                 Pecahan();
                break;
            case 4:
                outTerbilang();
                break;
            case 5:
                Kembali();
                break;
            case 6:
            case -1:
        //... antara tombol (3) dan clos box (-1) ditangani disini.
                System.exit(0); //keluar looping
            default:
        //... Jika kita disini ada kesalahan,
            JOptionPane.showMessageDialog(null,
                    "response salah "+ response);break;
        }
        }
    }
  
//Coding Untuk 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() {
        cc = JOptionPane.showInputDialog("Masukan Bilangan yang akan dibilang : ");
        try {
            if (cc.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Jangan dikosongi !!!");
                outTerbilang();
            } else {

                JOptionPane.showMessageDialog(null, new  MenuJoption().terbilang(new Long(cc)), "Terbilang", JOptionPane.INFORMATION_MESSAGE);
            }
        } catch (NullPointerException qqq) {
            JOptionPane.showMessageDialog(null, "Harap diisi dulu !!");
            outTerbilang();
        } catch (NumberFormatException uuu) {
            JOptionPane.showMessageDialog(null, cc
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outTerbilang();
        }
     }
  
//Coding Untuk Pecahan
        public static void Pecahan (){
        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 main(String[] args){
        menuJOption();
    }  
}
1. Ini adalah tampilan jika coding berhasil




 2.Jika nama dikosongi akan tampil seperti ini maupun di cancel ataupun diclose akan tampil seperti ini











3.Sekarang kita masukkan nama 



 4.Lalu akan tampil kotak dialog untuk menampilkan jenis kelamin











5.Bila dikosongi ataupun kita klik cancel akan tampil seperti berikut

 6,Klik ok lalu masukkan jenis kelamin anda


 7.Terus akan tampil jendela seperti berikut


 8.Coba kita klik "BINER" akan tampil sbb
9.Coba kita tes dengan memasukkan huruf









10.Akan tampil notif ini

11.Lalu klik "OK" masukkan dengan angka










12.Inilah hasilnya















13.Klik "OK" kemudian pilih HEXA,,masukkan angka seprti langkah ke 11










14.Dan ini adalah hasil dari OKTAL











15.Klik "OK" lalu coba kita pilih menu "pecahan"












16.Inilah hasilnya



















17.Klik "OK" lalu kita coba pilih menu "terbilang" dan akan tampil seperti ini










18.Dan ini hasil pembilangannya









19.Klik "OK" bila kita pilih menu kembali pada tampilan no.7 akan tampil lagi sbb











Bila kita pilih menu keluar pada tampilan no.7 akan langsung close jendela tsb..
ya sekian dulu post dari saya,ada kurang lebihnya saya mohon maaf,,klu ada scrip yg salah mohon dicomen ya..




Tidak ada komentar:

Posting Komentar