Minggu, 16 September 2012

Menu JOption


ini adalah menu JOption yang mohon dipraktekkan dan dicek apakah coding saya sudah benar apa belum
silahkan ini codingnya di bawah :

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

import javax.swing.JOptionPane;

/**
 *
 * @author juwita
 */
public class menuJOption {
    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);
               hasilBiner = new StringBuilder (); //kalau pakai yang new
               //hasilBiner.delete(0, 10); kalau pakai yang delete
        }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);
             hasilHexa = new StringBuilder (); //kalau pakai yang new
             //hasilHexa.delete(0, 10); kalau pakai yang delete
        }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);
             hasilOctal = new StringBuilder (); //kalau pakai yang new
             //hasilOctal.delete(0, 10); kalau pakai yang delete
        }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 *jangan spasi ya,,pakai huruf besar saja buat bedainnya,, maaf * ");
    try {
        if(name.isEmpty()){
            JOptionPane.showMessageDialog(null, "ayo perkalkan nama kamu dulu kawan");
            inpNama();//kembali input nama
        }
         else{
       for(int i=0; i< name.length();i++){
        if(!Character.isLetter(name.charAt(i)))  {
            JOptionPane.showMessageDialog(null, "Hanya Boleh diisi huruf saja !!");
        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 nefthink kawan :P");
                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 <br> *maksimal Quadriliyun* ");
    try{
            if(sc.isEmpty()){
                JOptionPane.showMessageDialog(null, "Harap Isi Terlebih Dahulu Angkanya!!");
                outTerbilang();
            }else{
                JOptionPane.showMessageDialog(null, new menuJOption().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
            }
        }catch(NullPointerException not){
            JOptionPane.showMessageDialog(null, "Masukan Dulu Bilangannya !! ");
            outTerbilang();
        }catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Hey '" + sc + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outTerbilang();
        }
    }
    //Untuk Pecahan
    public static void bilPecahan(){
    int dec;
     
        String str=JOptionPane.showInputDialog("Masukkan bilangan yang ingin kamu ketahui apabila dipecah ");
        try {
            if (str.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Kok kosong ?? Isi dulu ya.. !!");
                bilPecahan();
            } else {
        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);
            }
            } catch (NullPointerException not) {
            JOptionPane.showMessageDialog(null, "Ayoo diisi duluu.. !!");
            bilPecahan();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Halooo '" + str + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            bilPecahan();
            }}
    //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();
                    break;
                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();
     
 
    }

}

kalo ada yang salah mohon dikritik
Terima Kasih


0 komentar:

Posting Komentar