Selasa, 11 September 2012

Konversi Bilangan menggunakan JOption dengan Java

Hampir sama dengan konversi bilangan java terdahulu , kali ini kita akan menggunakan JOptionPane dan hasilnya akan ditampilkan di message dialog.
Berikut caranya:
  1.  Buka Netbeans , lalu klik kanan New Java Class
  2. Tuliskan coding berikut:package

Praktek1;
import javax.swing.JOptionPane;
public class MenuDariJOption {
     //global variabel
    private static String name; //object
    private static String des; //object
    private static String jk; //object
    private static String kelamin; //object
    private static int validDes; //variabel
    static StringBuilder binerHasil= new StringBuilder();
    static StringBuilder hexaHasil= new StringBuilder();
    static StringBuilder oktalHasil= new StringBuilder();
    static String vk;
//fungsi/method nya
    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){
        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]);
        }
    }
//pendeklarasian inputin bilangan desimalnya
public static void inputDesJOption(){
        des=JOptionPane.showInputDialog("Masukkan Bilangan Desimal : ");
        try{
            if(des.isEmpty()){
                JOptionPane.showMessageDialog(null, "Tolong diisi dengan lengkap ");
                inputDesJOption(); //kembali input bilangan desimal
            }
        }
        catch(NullPointerException nfe){
            JOptionPane.showMessageDialog(null, "Isi dulu yaaa ");
            inputDesJOption(); //kembali input bilangan desimal
        }
    }
//ini hasil nya di messagedialog
    public static void outHasilBiner(){
        inputDesJOption();
        try{
            validDes=Integer.parseInt(des);
            keBiner(validDes);
         
            JOptionPane.showMessageDialog(null, "Binernya adalah "+binerHasil, "Alhamdulillah Jadi", JOptionPane.PLAIN_MESSAGE);
        }
        catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " .... bukan angka !!"
                    + "\nMasukkan hanya angka saja !!!");
            outHasilBiner();
        }
    }
    public static void outHasilHexa(){
        inputDesJOption();
        try{
            validDes=Integer.parseInt(des);
        keHexa(validDes);
        JOptionPane.showMessageDialog(null, des+" Hexanya adalah: "+hexaHasil, "Alhamdulillah Jadi", JOptionPane.PLAIN_MESSAGE);
        }
        catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " .... bukan angka !!"
                    + "\nMasukkan hanya angka saja !!!");
            outHasilHexa();
        }
    }
    public static void outHasilOktal(){
        inputDesJOption();
        try{
            validDes=Integer.parseInt(des);
            keOktal(validDes);
            JOptionPane.showMessageDialog(null, des+" Oktalnya adalah: "+oktalHasil, "Alhamdulillah Jadi", JOptionPane.PLAIN_MESSAGE);
        }
        catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " .... bukan angka !!"
                    + "\nMasukkan hanya angka saja !!!");
            outHasilOktal();
        }
    }

    //pendeklarasian inputin nama
    public static void inpNama(){
        name=JOptionPane.showInputDialog("Masukkan Nama Anda ");
        try{
            if(name.isEmpty()){
                JOptionPane.showMessageDialog(null, "Isi nama anda");
                inpNama(); //kembali input nama
            }
        }
        catch(NullPointerException npe){
            JOptionPane.showMessageDialog(null, "Tolong masukkan nama anda");
            inpNama(); //kembali input nama
        }
    }
    //pendeklarasian jenis kelamin nya
    public static void jenisKelamin(){
        jk=JOptionPane.showInputDialog("Masukkan jenis kelamin anda(Perempuan / Laki-laki )");
        try{
            if(jk.isEmpty()){
                JOptionPane.showMessageDialog(null, "Isi dulu jenis kelamin anda(Perempuan / Laki-laki)");
                jenisKelamin();
            }
        }
        catch(NullPointerException npe){
            JOptionPane.showMessageDialog(null, "Tolong isi jenis kelamin anda (Perempuan / Laki-laki)");
            jenisKelamin();
        }
        if ("Laki-laki".equals(jk)) {
            kelamin="Bro";
        }
        else{
            if("Perempuan".equals(jk)){
                kelamin="Sis, ";
            }
            else{
                JOptionPane.showMessageDialog(null, "Pilihan jenis kelamin hanya 'Perempuan dan Laki-laki");
                jenisKelamin();
            }
        }
     
    }

 
    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;
    }
//scriptnya TERBILANG kayak gini
    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 nya";
        for(int a=6;a>0;a--){
            y =  (int) (x/Math.pow(10, a*3));
            if(y > 0){
                if(y==1 && a==1) bilang += " Seribu "; else bilang += sebut(y) + satuan[a];
            } x %= Math.pow(10, a*3);
        }
        bilang+=sebut((int)x);
        return bilang;
    }
    public static void outTerbilang(){
    vk = JOptionPane.showInputDialog("Masukan Bilangan yang akan dibilang: ");
    JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(vk)), "TERBILANG nya", JOptionPane.INFORMATION_MESSAGE);
 
    }
//script PECAHAN kayak gini
    public static void hasilPecahan(){
        int desimal;
     
        String str=JOptionPane.showInputDialog("Masukkan bilangan yang akan kamu pecahkan: ");
        desimal=Integer.parseInt(str);
        int satu,dua,tiga,empat,lima,enam,tujuh,delapan,sembilan,sepuluh;
     
        satu=desimal/100000;
        desimal%=100000;
     
        dua=desimal/50000;
        desimal%=50000;
             
        tiga=desimal/10000;
        desimal%=10000;
     
        empat=desimal/5000;
        desimal%=5000;
                   
        lima=desimal/1000;
        desimal%=1000;
     
        enam=desimal/500;
        desimal%=500;
             
        tujuh=desimal/100;
        desimal%=100;
     
        delapan=desimal/50;
        desimal%=50;
     
        sembilan=desimal/10;
        desimal%=10;
     
        sepuluh=desimal/1;
        desimal%=1;
 
 
            JOptionPane.showMessageDialog(null,"Jumlah seratus ribuan = "+satu
                                        +"\nJumlah lima puluh ribuan = "+dua
                                         +"\nJumlah sepuluh ribuan = "+tiga
                                        +"\nJumlah lima ribuan = "+empat
                                        +"\nJumlah seribuan = "+lima
                                        +"\nJumlah lima ratusan = "+enam
                                        +"\nJumlah seratusan = "+tujuh
                                        +"\nJumlah lima puluhan = "+delapan
                                        +"\nJumlah limaan = "+sembilan
                                        +"\nJumlah satuan = "+sepuluh
                                        , "PECAHAN nya", JOptionPane.INFORMATION_MESSAGE);
    }
//
    public static void kembalikeMenu(){
        inpNama();
        jenisKelamin();
    }
//menu semuanya ada di bagian ini
    public static void menuJOption(){
        //    . . .teks untuk tombol
        inpNama();
        jenisKelamin();
        String[] pilihan = {"BINER", "HEXA", "OKTAL", "TERBILANG", "PECAHAN", "KEMBALI", "<<KELUAR>>"};
       // "Infinite" loop, selesai jika sistem exit(0)
        while (true) {
            int response = JOptionPane.showOptionDialog(
                               null                    
                             , "Welcome "+kelamin+name+" !!"
                                + "\nPilih Konversi Bilangan dibawah ini?"// Pesan
                             , "Konversi Bilangan"               // //judul bar
                             , JOptionPane.YES_NO_OPTION  // Tipe Option/pilihan
                             , JOptionPane.PLAIN_MESSAGE  // Tipe Pesan
                             , null                        // icon(none)
                             , pilihan       // tombol teks
                             , null    // label tombol Default
                           );
             //menggunakan switch untuk mengecek tombol yang di tekan.
            switch(response){
                case 0:
                    outHasilBiner();
                    break;
                case 1:
                    outHasilHexa();
                    break;
                case 2:
                    outHasilOktal();
                    break;
                case 3:
                    outTerbilang();
                    break;
                case 4:
                    hasilPecahan();
                    break;
                case 5:
                    kembalikeMenu();
                    break;
                case 6:
                case -1:
                    // ...antara tombol(3) dan close box(-1) di tangani disini.
                    System.exit(0); // keluar looping tapi
                default:
                    //...Jika kita disini ada kesalahan,
                    JOptionPane.showMessageDialog(null, "response tak terduga"
                                                    + response); break;
            }
        }
    }
    public static void main(String[] args){
        menuJOption();
    }

}


Setelah selesai maka hasilnya seperti berikut:

Isikan Nama


Bila tidak diisi nama dan kita klik ok

jika kita klik cancel dan exit

Bila sudah diisi nama dan kita klik ok maka akan muncul dibawah ini

Bila kosong dan di klik ok

Bila Kita klik cancel dan exit

Bila sudah diisi jenis kelamin maka hasilnya ini

Jika kita pilih biner


Jika kosong kita klik ok

Bila kita klik cancel dan exit

 dan hasilnya bila diisi

Bila kita pilih lagi ke hexa maka hasilnya seperti ini dan bila kosong kita klik maka hasilnya sama dengan seperti biner begitu juga jika kita klik cancel dan exit




Bila kita pilih lagi ke oktal maka hasilnya seperti ini dan bila kosong kita klik maka hasilnya sama dengan seperti biner begitu juga jika kita klik cancel dan exit


Jika kita kembali  dan memilih terbilang kita klik ok waktu masih kosong maka hasilnya




Jika kita isi maka hasilnya seperti di bawah ini


kita pilih lagi pecahan


maka hasilnya 



Jika kita klik kembali maka kita akan kembali ke message dialog mengisi nama
dan jika keluar maka akan selesai
selamat mencoba  :)

Tidak ada komentar:

Posting Komentar