10/09/12

Konversi Bilangan Menggunakan JOption


Holaaaa ! Utek - utek lagi nih :D
Ane mau share secuil ilmu JAVA yang ane dapet nih :D


Kali ini, aku sharing tentang Konversi Bilangan dan menampilakan bilangan tersebut dalam pecahannya dan penulisannya versi JAVA menggunakan JOption. Di program yang kali ini sebelum melakukan konversi, kita harus mengisi form identitas kita yang ditampilkan menggunakan show message. 

Check This OUT !

Nah buat lebih dalam membahas tentang program ini, kita lihat seperti apa codenya :

import javax.swing.JOptionPane;


public class menu_JOption {
    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 inputDesJOption(){
        des=JOptionPane.showInputDialog("Bilangan Desimal yang ingin dikonversikan : ");
        try{
            if(des.isEmpty()){
                JOptionPane.showMessageDialog(null, "Isi dulu bilangan desimalnya :D");
                inputDesJOption();
            }
        }
        catch(NullPointerException npa){
            JOptionPane.showMessageDialog(null, "Isi dulu ya :D");
            inputDesJOption();
        }
    }
    public static void eksepsiInpBiner(){
        inputDesJOption();
        try {
            validDes=Integer.parseInt(des);
            System.out.print("\nDesimal "+des+",Dalam biner = ");
            keBiner(validDes);
            System.out.println("\n");
             JOptionPane.showMessageDialog(null, "Desimal : "+des+" Dalam Biner : "+hasilBiner, "KONVERSI", JOptionPane.PLAIN_MESSAGE);
        }catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " Sorry ... Bukan angka lo"
                    + "\nInputkan angka saja ya ;D");
            outHasilBiner();
        }
    }
 
    public static void outHasilBiner() {
      
    eksepsiInpBiner();
    }
     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>1){
            keHexa (n/16);
        }
    System.out.print(daftarHexa[n%16]);
    hasilHexa.append(daftarHexa[n%16]);
  
    }
  
    public static void eksepsiInpHexa(){
        inputDesJOption();
        try {
            validDes=Integer.parseInt(des);
            System.out.print("\nDesimal "+des+",Dalam hexa = ");
            keHexa(validDes);
            System.out.println("\n");
             JOptionPane.showMessageDialog(null, "Desimal : "+des+" Dalam Hexa = "+hasilHexa, "KONVERSI", JOptionPane.PLAIN_MESSAGE);
        }catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " Sorry .... Bukan angka lo"
                    + "\nInputkan angka saja ya ;D");
            outHasilHexa();
        }
    }
    public static void outHasilHexa() {
    eksepsiInpHexa();
  
    }
     public static void keOctal(int n){
    if(n>1){
        keOctal(n/8);
      
    }
    System.out.print(n%8);
    hasilOctal.append(n%8);
    }
      public static void eksepsiInpOctal(){
        inputDesJOption();
        try {
            validDes=Integer.parseInt(des);
            System.out.print("\nDesimal "+des+",Dalam Octal = ");
            keOctal(validDes);
            System.out.println("\n");
             JOptionPane.showMessageDialog(null, "Desimal = "+des+" Dalam Octal = "+hasilOctal, "KONVERSI", JOptionPane.PLAIN_MESSAGE);
        }catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " Sorry .... Bukan angka lo"
                    + "\nInputkan angka saja ya ;D");
            outHasilOctal();
        }
    }
    public static void outHasilOctal() {
    eksepsiInpOctal();
    }
    public static void inpNama(){
    name=JOptionPane.showInputDialog("My name is ");
    try {
        if(name.isEmpty()){
            JOptionPane.showMessageDialog(null, "ayo perkenalkan nama kamu dulu kawan");
            inpNama();//kembali input nama
        } 
    }catch (NullPointerException npe){
        JOptionPane.showMessageDialog(null, "Isi dulu ya form namanya");
        inpNama();//kembali input nama
    }
    }
    //untuk menampilkan input dialog jenis Kelamin (gender)
    public static void jenisKelamin(){
        gender=JOptionPane.showInputDialog("Isi Form Jenis Kelamin berikut (Laki-Laki/Perempuan) "
                +"*TOLONG SESUAIKAN PENULISAN BESAR KECILNYA HURUF *");
        try{
            if(gender.isEmpty()){
                JOptionPane.showMessageDialog(null, "Laki-Laki apa Perempuan ya? Isi dulu deh biar gak bertanya-tanya");
                jenisKelamin();
            }
        }
        catch(NullPointerException npt){
            JOptionPane.showMessageDialog(null, "Isi dulu ya form Jenis Kelaminnnya");
            jenisKelamin();
        }
        if ("Laki-Laki".equals(gender)) {
            kelamin="Bung, ";
        }
        else{
            if("Perempuan".equals(gender)){
                kelamin="Sis, ";
            }
            else{
                JOptionPane.showMessageDialog(null, "Maaf hanya ada 2 pilihan (Laki-Laki atau 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 "Melebihi kapasitas";
        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("Inputkan Bilangan yang kamu ingin ketahui penulisannya *maksimal Quadriliyun* ");
    JOptionPane.showMessageDialog(null, new menu_JOption().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
    }
    //Untuk Pecahan
    public static void bilPecahan(){
    int dec;
      
        String str=JOptionPane.showInputDialog("Masukkan bilangan yang ingin kamu ketahui apabila 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);
    }
    //inputkembali
     public static void menuKembali(){
        inpNama();
        jenisKelamin();
    }
   
    public static void menuJOption(){
    //....text untuk tombol.
        inpNama();
        jenisKelamin();
        String[] pilihan={"BINER","HEXA","OCTAL","TERBILANG", "PECAHAN", "KEMBALI","<<KELUAR>>"};
        //...."Infinite" loop ,selesai jika system.exit(0)
        while (true){
            int response = JOptionPane.showOptionDialog(null//Tengah Window.
                    ,"Selamat Datang Lagi " +kelamin +name+"!!"+"\nPilih Proses Konversi Bilangan dibawah ini"//pesan
                    ,"Proses 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 di tekan.
            switch( response){
                case 0:
                    outHasilBiner();
                    break;
                case 1:
                    outHasilHexa();
                    ;
                     break;
                case 2:
                    outHasilOctal();
                    ;
                case 3:
                    outTerbilang();
                     break;
                case 4:
                    bilPecahan();
                    break;
                case 5:
                    menuKembali();
                    break;
                case 6:
                case -1:
                  
                    //..antara tombol (6) dan close box (-1) ditangani disini.
                    System.exit(0);//keluar looping,tapi
                default:
                    //Jika kita disini ada kesalahan,
                    JOptionPane.showMessageDialog(null,"Wow Ini Diluar Logika" +  response);break;
            }         
        }
    }
    public static void main(String[]args){
    menuJOption();
    }
}

Dari coding tersebut jika di run akan menampilkan tampilan seperti ini :

(Tampilan Pertama)


(notifikasi ini muncul apabila nama tidak diisi)


(notifikasi akan muncul apabila form login tesebut di cancel atau di close)

(tampilan login untuk mengisi jenis kelamin)


(notifikasi yang muncul apabila jenis kelamin tidak diisi)


(notifikasi yang muncul apabila jenis kelamin diisi selain Laki-Laki dan Perempuan)


(Tampilan menu konversi)


(Form untuk mengisi inputan bilangan desimal yang ingin dikonversikan, tampilan ini akan muncul pada konversi biner, hexa maupun octal)




(Tampilan hasil dari konversi biner, hexa, dan octal)


(Notifikasi apabila form bilangan desimal tidak diisi)


(Notifikasi apabila form diisi huruf bukan angka)


(Notifikasi yang muncul apabila form dicancel atau diclose)

(Tampilan form untuk mengisi bilangan yang ingin kita ketahui cara penulisannya)

(Hasil dari form bilangan yang ingin kita ketahui penulisannya)



(Form untuk mengisi bilangan yang ingin kita ketahui berapa pecahannya)



(Hasil dari form bilangan yang ingin kita ketahui pecahannya)



Ok itu project yang sudah saya buat, jika ingin mengembangkan monggo :) Semoga bermanfaat :D
regards : OGLEK

Tidak ada komentar:

Posting Komentar