Rabu, 12 September 2012

Konversi Bilangan Menggunakan JOptionPane



/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Praktek1;


/**
 *
 * @author Toshiba
 */
import javax.swing.JOptionPane;
public class PRJavaKonversiBil {
    private static String name;
    private static String des;
    private static String kelamin;
    private static String gender;
    private static int validDes;
    static StringBuilder binerResult = new StringBuilder();
    static StringBuilder hexaResult = new StringBuilder();
    static StringBuilder oktalResult = new StringBuilder();
    static String sc;
    public static void keBiner (int n){
        if (n>1){
            keBiner(n/2);
    }
    System.out.print(n%2);
    binerResult.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>1){
            keHexa(n/16);
        }
        System.out.print(daftarHexa[n%16]);
        hexaResult.append(daftarHexa[n%16]);
    }
    public static void keOktal (int n){
        char [] daftarOktal={'1','2','3','4','5','6','7'};
        if (n>1){
            keOktal(n/8);
        }
        System.out.print((daftarOktal[n%8]));
        oktalResult.append(daftarOktal[n%8]);
    }
    public static void inputDesJOption(){
        des = JOptionPane.showInputDialog("Masukkan Bil.desimal =");
        try{
            if(des.isEmpty()){
                JOptionPane.showMessageDialog(null, "anda harus mengisikan"
                        + "bilangan decimal terlebih dahulu");
                inputDesJOption();
            }
        }
        catch(NullPointerException npa){
            JOptionPane.showMessageDialog(null, "maaf, mohon isi bilangan desimal");
            inputDesJOption();
        }
    }
    public static void outHasilBiner(){
        inputDesJOption();
        try{
            validDes=Integer.parseInt(des);
            System.out.print("\n Bilangan Desimal "+des+" dalam Biner adalah: ");
            keBiner(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal "+des+" "
                    + "dalam Biner adalah : "
                    +""+binerResult, "Kotak Hasil", JOptionPane.PLAIN_MESSAGE);
        }
        catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    +"bukan angka !"
                    + "\nMohon isikan angka saja");
            outHasilBiner();
        }
    }
    public static void outHasilHexa(){
        inputDesJOption();
        try{ //untuk melakukan penanganan kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\nBilangan Decimal "+des+" dalam Hexa adalah :");
            keHexa(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan Desimal "+des+" dalam Hexa adalah :"
                    + hexaResult, "Kotak Hasil", JOptionPane.PLAIN_MESSAGE);
        }
        catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " bukan angka !"
                    + "\nmohon isikan angka saja");
            outHasilHexa();
        }
    }
    public static void outHasilOktal(){
        inputDesJOption();
        try{
            validDes=Integer.parseInt(des);
            System.out.print("\nBilangan Desimal "+des+" dalam Oktal adalah: ");
            keOktal(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan "+des+"  Desimal "
                    + "dalam Octal adalah : "
                    + ""+oktalResult, "Kotak Hasil", JOptionPane.PLAIN_MESSAGE);
        }
        catch(NumberFormatException nfe){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " bukan angka"
                    + "\nMohon isikan angka saja");
            outHasilOktal();
        }
    }
    public static void kembaliMenu(){
        inpNama();
        jenisKelamin();
    }
    public static void inpNama(){
    name=JOptionPane.showInputDialog("Masukkan Nama Anda :");
    try {
        if(name.isEmpty()){
            JOptionPane.showMessageDialog(null, "Nama tidak boleh kosong!!");
            inpNama();//kembali input nama
        }
        }
        catch(NullPointerException npe){
            JOptionPane.showMessageDialog(null, "Harap diisi Nama dulu ya!!");
            inpNama();//kembali input nama
        }
            }
    public static void jenisKelamin(){
        gender=JOptionPane.showInputDialog("Pilih Jenis Kelamin Anda"
                + " (Laki-laki/Perempuan): ");
        try{
            if(gender.isEmpty()){
                JOptionPane.showMessageDialog(null, "Mohon diisi dulu "
                        + "(Laki-laki/Perempuan");
                jenisKelamin();
            }
        }
        catch(NullPointerException npt){
            JOptionPane.showMessageDialog(null, "Harap diisi ya !! ");
            jenisKelamin();
        }
        if ("Laki-laki".equals(gender)) {
            kelamin="Mas. ";
        }
        else{
            if("Perempuan".equals(gender)){
                kelamin="Mbak. ";
            }
            else{
                JOptionPane.showMessageDialog(null, "Mohon isikan "
                        + "(Laki-laki/Perempuan). JANGAN YANG LAIN");
                jenisKelamin();
            }
        }
       
    }
     String[] number={"","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 = number[y]+" ratus ";
            if(y == 1)bilang=" seratus ";
            x%=100;
        }
        if(x<12)bilang += number[x];
        else{
            y=x/10;
            x%=10;
            if(y==1)
                bilang +=number[x] + " belas ";
            else
                bilang += number[y]+ " puluh "+ number[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 disebutkan "
            + ": ");
    JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new
            Long(sc)), "Terbilang", JOptionPane.INFORMATION_MESSAGE);
    } 
  public static void outPecahan(){
        int desimal;
       
        String str=JOptionPane.showInputDialog("Masukkan bilangan Anda 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 menuJOption(){
    //... Text untuk tombol.
    inpNama();
    jenisKelamin();
    String[] pilihan = {"BINER", "HEXA", "OKTAL","TERBILANG",
        "PECAHAN","BACK","<< EXIT >> "};
    // ..."infinite" loop, selesai jika System.exit(0)
    while (true){
        int response = JOptionPane.showOptionDialog(
                null // Tengah Window.
                , "Welcome "+kelamin+name+"!!"
                + "\nPilih Konversi Bilangan yang anda inginkan?"//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:
                outTerbilang();
                break;
            case 4:
                outPecahan();
                break;
            case 5:
                kembaliMenu();
                break;
            case 6:
            case -1:
                //...antara tombol (3) dan close box(-1) ditangani diisi.
                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();
    }

}

Dan tekan shift + f6 untuk melihat hasilnya
Pertama : masukkan Nama  setelah itu tekan OK !!


























Read More