Senin, 17 September 2012

Program Konversi dengan JOption

*hening
*bingung mau ngomong apa

oke fren ini udah malam , *trus masalah buat gw?* sumpah bingung banget mau ngawalin ini dengan apa . udah deh langsung aja ke intinya ya fren . oke fren aku mau share sedikit ilmu nih yang aku dapet dari sekolah , kata ibu ku "kalo kita punya ilmu itu harus saling dishare biar ilmu nya tambah berkah" jadi sekarang akan aku amalkan ilmu yang telah aku dapat disekolah . .
ini tentang program java fren . program ini hampir sama dengan yang aku post dulu . intinya program ini ya konversi biner hexa dan oktal , oke semoga kalian tidak bosan . . :)

langsung aja aku kasih gambaran program yang akan kita buat freenn . .



ini tampilan awal dari program yang ingin kita buat .
dari tampilan awal itu jika kita tidak mengisikan nama kita tapi
langsung menklik tombol "ok" maka akan keluar peringatan seperti itu .
dan yang ini adalah peringatan jika kita menekan tombol cancel
jika kita telah mengisikan nama dan telah menekan tombol ok
maka kita langsung mendapatkan tampilan mengisikan jenis kelamin .
jika kita tidak mengisi jenis kelamin lalu menekan tombol oke
maka tampilan peringatan yang akan disampaikan
seperti ini
ini peringatan jika di jenis kelamin kita menekan cancel
ini tampilan menu fren , disitu ada banyak pilihan yang bisa kita pilih
jika kalian memilih kembali maka akan kembali ke tampilan awal
tadi yang nama itu loh fren
ini jika kita memilih biner maka akan keluar seperti ini
ini peringatan jika kita tidak mengisi lalu langsung menekan oke

ini jika kita menekan cancel 
ini jika kita mengisi di input biner dengan huruf maka akan
keluar tampilan peringatan ini
ini hasil pengkonversian pada biner , untuk konverisan hexa dan
oktal cara nya sama dengan ini

ini tampilan untuk terbilang dan isikan bilangan yang
ingin disebut
ini tampilan peringatan jika kita menekan oke sebelum ngisikan
bilangan yang ingin disebutkan


dan yang ini peringatan jika menekan button cancel

ini tampilan jika kita mengisikan bilangan 90 lalu akan
muncul seperti ini

ini tampilan untuk pecahan

ini jika kita tidak mengisikan lalu langsung menekan oke

ini tampilan jika kita menekan tombol cancel

ini hasil pecahan dari 3000 
ini jika kita menekan button keluar
dan akan muncul tampilan seperti ini

nah gimana fren rencana program yang ingin kita buat ? keren kan ? yuk mari kita buat :)


1. kemudian ketikkan code berikut , letakkan dibawah packages :


    import javax.swing.JOptionPane;

2. deklarasikan variable yang akan digunakan di bawah class :


    public class binerhexaoktal {
      private static String name;
           private static String des;
           private static String gender;
           private static String kelamin;
           private static int validDes;
           static StringBuilder binerHasil = new StringBuilder();
           static StringBuilder hexaHasil = new StringBuilder();
           static StringBuilder oktalHasil = new StringBuilder();
           static String sc;

3. buat coding untuk mengkonversi bilangan biner:


    public static void keBiner(int n) {
                 if (n > 1) {
                     keBiner(n / 2);
                 }
              System.out.print(n % 2);
              binerHasil.append(n % 2);
              // binerHasil.append("\033");
          }


4. buat coding untuk mengkonversi bilangan hexa :


   public static void keHexa(int n) {//int n : parameter
                 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]);
                       }
            }


5.  buat coding untuk mengkonversi bilangan oktal :

       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]);
                  }
             }

6. coding  untuk menampilkan hasil konversi bilangan sebagai berikut :
public static void  inputDesJOption (){
           
           des=JOptionPane.showInputDialog("Masukan Bil.desimal");
          try {
            if (des.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Isi dulu bilanganya");
                inputDesJOption();
            }
        } catch (NullPointerException npe) {
            JOptionPane.showMessageDialog(null, "Jangan keluar dulu, Harap di isi dulu !!");
                inputDesJOption();
                
        } catch (NumberFormatException npe) {
            JOptionPane.showMessageDialog(null, "Hey '" + des + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
               inputDesJOption();
           
        }}
         
           
           public static void  eksepsiInpBiner (){
               inputDesJOption();
                    try {
                        validDes=Integer.parseInt(des);
                        System.out.print("\nDesimal dari "+ des +
                        ",BInernya Adalah = ");
                        keBiner(validDes);
                        System.out.println("\n");
                        JOptionPane.showMessageDialog(null, "Bialanga Decimal" + des +", dalam binernya adalah ="+  hasilbiner ,
                            "KONVERSI BILANGAN " ,JOptionPane.INFORMATION_MESSAGE);
                        hasilbiner=new StringBuilder();
                                
                    
                    }catch (NumberFormatException nfe) {
                        JOptionPane.showMessageDialog(null, des+"bukan angaka!!"
                              +"\nMasukan Angka saja!!");
                        eksepsiInpBiner();
                       
           }
           
           }
           
           public static void eksepsiInphexa(){
                inputDesJOption();
                    try{
                       validDes=Integer.parseInt(des);
                       System.out.print("\n Desimal dari"+des+
                          ",Hexanya adalah= ");                
                       keHexa(validDes);
                       System.out.println("\n");
                       JOptionPane.showMessageDialog(null, "Bialanga Decimal" + des +", dalam Hexanya adalah ="+  hasilhexa ,
                            "KONVERSI BILANGAN " ,JOptionPane.INFORMATION_MESSAGE);
                        hasilhexa=new StringBuilder();
                     }catch (NumberFormatException nfe){
                      JOptionPane.showMessageDialog(null, des +"bungkan Angaka!!"//di gunakan untuk memberitahu User bahwa hanya angka yang bisa di inputkan
                          +"\n Masukan angka saja!!");
                       
                     eksepsiInphexa();
                              
                  }
                  }
           
            public static void eksepsiInpOktal(){
                inputDesJOption();
                    try{
                       validDes=Integer.parseInt(des);
                       System.out.print("\n Desimal dari"+des+
                          ",Oktalnya adalah= ");
                       keoktal(validDes);
                       System.out.println("\n");
                        JOptionPane.showMessageDialog(null, "Bialanga Decimal" + des +", dalam Hexanya adalah ="+  hasiloktal,
                            "KONVERSI BILANGAN " ,JOptionPane.INFORMATION_MESSAGE);
                        hasiloktal=new StringBuilder();
                  }catch (NumberFormatException nfe){
                      JOptionPane.showMessageDialog(null, des +"bungkan Angaka!!"
                              +"\n Masukan angka saja!!");
                     eksepsiInpOktal();
                              
                  }
                  }
            
          
           public static void  outHasilBIner (){
                eksepsiInpBiner();
                
           }
            public static void  outHasilhexa (){
                eksepsiInphexa();
                
           }
             public static void  outHasilOktal (){
                eksepsiInpOktal();
                
           }

7.  script untuk konversi pecahan sebagai berikut :  
           
     public static void hasilPecahan() {
        int desimal;

        String str = JOptionPane.showInputDialog("Masukkan bilangan yang akan dipecah : ");
        try {
            if (str.isEmpty()) {
                JOptionPane.showMessageDialog(null, "loh mau kemana ? isi dulu ya !!");
                hasilPecahan();
            } else {

                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);
            }
        } catch (NullPointerException not) {
            JOptionPane.showMessageDialog(null, "kemana sih?? Isi dulu bilangannya.. !!");
            hasilPecahan();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Hey '" + str + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            hasilPecahan();
        }
    }

8.script untuk konversi terbilang sebagai berikut :

//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() {
        sc = JOptionPane.showInputDialog("Masukan Bilangan yang akan disebut : ");
        try {
            if (sc.isEmpty()) {
                JOptionPane.showMessageDialog(null, "isi dulu dong ya ya");
                outTerbilang();
            } else {

                JOptionPane.showMessageDialog(null, new binerhexaoktal().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
            }
        } catch (NullPointerException not) {
            JOptionPane.showMessageDialog(null, "mau kemana sih ? isi dulu yaa");
            outTerbilang();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Hey '" + sc + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outTerbilang();
        }
    }

9. coding untuk menginputkan nama user :

//menampilkan input dialog nama
    public static void inpNama() {
        name = JOptionPane.showInputDialog("Masukkan nama Anda : ");
        try {
            if (name.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Nama tidak boleh kosong !!");
                inpNama();
            }
        } catch (NullPointerException npe) {
            JOptionPane.showMessageDialog(null, "Harap diisi nama dulu doonk !!");
            inpNama();
        }
    }  

10. coding untuk menginputkan Gender user :



//menampilkan input dialog jenis Kelamin (gender)

    public static void jenisKelamin() {
        gender = JOptionPane.showInputDialog("Masukkan Jenis Kelamin Anda (cowok/cewek) : ");
        try {
            if (gender.isEmpty()) {
                JOptionPane.showMessageDialog(null, "diisi dulu ya :)");
                jenisKelamin();
            }
        } catch (NullPointerException npt) {
            JOptionPane.showMessageDialog(null, "hey kenapa ga diisi? isi dulu dong , ga bayar nih");
            jenisKelamin();
        }
        if ("cowok".equals(gender)) {
            kelamin = "Saudara, ";
        } else {
            if ("cewek".equals(gender)) {
                kelamin = "Saudari, ";
            } else {
                JOptionPane.showMessageDialog(null, "Hanya bisa diisi cowok dan cewek saja !!");
                jenisKelamin();
            }
        }

    }

11.  ini adalah bagian terpenting dalam pembuatan sebuah aplikasi java ,
      yaitu pemanggilan jantung alias method sesuai fungsi masing-masing dan di gabung menjadi satu 
     tampilan utama/menu :

public static void menuJOption() {
        inpNama();
        jenisKelamin();
        String[] pilihan = {"BINER", "HEXA", "OKTAL", "TERBILANG", "PECAHAN", "KEMBALI", "KELUAR"};
        while (true) {
            int response = JOptionPane.showOptionDialog(
                    null, "Selamat Datang " + kelamin + name + " !!"
                    + "\nPilih Konversi Bilangan dibawah ini?"// Pesan
                    , "Konversi Bilangan" // Judul di Tittlebar
                    , JOptionPane.YES_NO_OPTION // Tipe Option
                    , JOptionPane.PLAIN_MESSAGE // Tipe Pesan
                    , null, pilihan, null // Default button
                    );
            switch (response) {
                case 0:
                    outHasilBiner();
                    break;
                case 1:
                    outHasilHexa();
                    break;
                case 2:
                    outHasilOktal();
                    break;
                case 3:
                    outTerbilang();
                    break;
                case 4:
                    hasilPecahan();
                    break;
                case 5:
                    kembaliMenu();
                    break;
                case 6:
                case -1:
                    //...antara tombol (3) danclose box (-1) ditangani disini.
                      System.out.println("Terimakasih atas Kunjungan Anda");
                        JOptionPane.showMessageDialog(null, "Terimakasih Atas Kunjungan Anda");
                        System.exit(0);
                    //keluar looping
                default:
                    JOptionPane.showMessageDialog(null, "response salah"
                            + response);
                    break;
            }
        }
    }
public static void main(String[] args) {
        menuJOption();
    }
    
}




Aulia  Iklima