CLICK HERE FOR FREE BLOGGER TEMPLATES, LINK BUTTONS AND MORE! »

Rabu, 12 September 2012

MenuDariJOption

Konversi Bilangan Menggunakan Menu JOption


Kali ini saya akakn men-shar hasil belajar saya di kelas,yaitu tentang java.
Project ini menggunakan menu dari JOptionPane.
Jadi kita mengkonversi bilangan yg interface nya menggunakan dialog dari JOptionPane.
Dan coding nya juga menggunakan menu dari JOption.

Caranya :
Bukalah terlebih dahulu Netbeans nya.
Kemudian,buat JavaProject. Setelah itu buatlah packages di dalam JavaProject. Lalu buatlah Java Class di dalam Packages.

Setelah itu, tuliskan coding berikut ini :


package project.java;
import javax.swing.JOptionPane;
/**
 *
 * @author henis yus eva
 */
public class MenuDariJOption {
    private static String name;
    private static String des;
    private static int validDes;
    static String kelamin;
    static String inpTerbilang;
    static StringBuilder hasilBiner = new StringBuilder();
    static StringBuilder hasilHexa = new StringBuilder();
    static StringBuilder hasilOktal = new StringBuilder();

    public static void keBiner(int n) {
        if(n>1) {
            keBiner(n/2);
        }
        System.out.print(n%2);
        hasilBiner.append(n % 2);
    }
    public static void Hexa(int n){
        char[] daftarHexa={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        int sisaBagi = n%16;
        if(n>1){
            Hexa((n - sisaBagi) / 16);
            System.out.print(daftarHexa[n%16]);
            hasilHexa.append(n % 16);
        }
    }
    public static void keOktal(int n) {
        char[] daftarOktal = {'0', '1', '2', '3', '4', '5', '6', '7'};
        if (n > 1) {
            keOktal(n / 8);
        }
        System.out.print(daftarOktal[n % 8]);

        hasilOktal.append(n % 8);
    }
    public static void inputDesJOption() {
        des=JOptionPane.showInputDialog("Masukkan "
                + "Bil.Desimalnya = ");
                try {
            if (des.isEmpty()) {
                JOptionPane.showMessageDialog(null,
                        "bilangan tidak boleh kosong !");
                inputDesJOption();//kembali input nama
            }
        } catch (NullPointerException npe) {
            JOptionPane.showMessageDialog(null,
                    "Harap diisi Bilangan desimalnya dahulu !");
            inputDesJOption(); }//kembali input bil desimal
    }
    public static void inpKelamin() {
        kelamin = JOptionPane.showInputDialog("Masukkan"
                + "Jenis Gender anda laki-laki/perempuan :");
        try {
            if (kelamin.isEmpty()) {
                JOptionPane.showMessageDialog(null,
                        "Jenis Gender tidak boleh kosong !");
                inpKelamin();//kembali input kelamin
            }
        } catch (NullPointerException npe) {
            JOptionPane.showMessageDialog(null,
                    "Harap diisi Gender anda dahulu !");
            inpKelamin();//kembali input kelamin
        }
        if ("laki-laki".equals(kelamin)) {
            kelamin = "Mr ";
        } else {
            if ("perempuan".equals(kelamin)) {
                kelamin = "Ms ";

            } else {
                JOptionPane.showMessageDialog(null, "Hanya perempuan atau laki - laki");
                inpKelamin();
            }
        }
    }

    public static void eksepsiInpBiner() {
        inputDesJOption();
        try { //konsepnya seperti if dan else ------ try-catch-catch----finally
            validDes = Integer.parseInt(des);
            System.out.print("\nDesimal dari " + des
                    + ", Binernya adalah = ");
            keBiner(validDes);
            System.out.println();
            JOptionPane.showMessageDialog(null, "Bilangan desimal :" + des
                    + " maka binernya adalah :" + hasilBiner, "KONVERSI BILANGAN", JOptionPane.PLAIN_MESSAGE);
            hasilBiner = new StringBuilder();
        } catch (NumberFormatException nfe) {// dirun saat kesalahan formatnumber
            JOptionPane.showMessageDialog(null, des
                    + "bukan angka !"
                    + "\nMasukkan angka saja !");
            eksepsiInpBiner();
        }
    }

    public static void eksepsiInpHexa() {
        inputDesJOption();
        try { //konsepnya seperti if dan else ------ try-catch-catch----finally
            validDes = Integer.parseInt(des);

            System.out.print("\nDesimal dari " + des
                    + ", Hexanya adalah = ");
            Hexa(validDes);
            System.out.println();
            JOptionPane.showMessageDialog(null, "Bilangan desimal :" + des
                    + " maka hexanya adalah :" + hasilHexa, "KONVERSI BILANGAN", JOptionPane.PLAIN_MESSAGE);
            hasilHexa = new StringBuilder();
        } catch (NumberFormatException nfe) {// dirun saat kesalahan formatnumber
            JOptionPane.showMessageDialog(null, des
                    + "bukan angka !"
                    + "\nMasukkan angka saja !");
            eksepsiInpHexa();
        }
    }

    public static void eksepsiInpOktal() {
        inputDesJOption();
        try { //konsepnya seperti if dan else ------ try-catch-catch----finally
            validDes = Integer.parseInt(des);
            System.out.print("\nDesimal dari " + des
                    + ", Oktalnya adalah = ");
            keOktal(validDes);
            System.out.println();
            JOptionPane.showMessageDialog(null, "Bilangan desimal :" + des
                    + " maka oktalnya adalah :" + hasilOktal, "KONVERSI BILANGAN", JOptionPane.PLAIN_MESSAGE);
            hasilOktal = new StringBuilder();
        } catch (NumberFormatException nfe) {// dirun saat kesalahan formatnumber
            JOptionPane.showMessageDialog(null, des
                    + "bukan angka !"
                    + "\nMasukkan angka saja !");
            eksepsiInpOktal();
        }
    }
    public static void outHasilBiner() {
        eksepsiInpBiner();
    }
    public static void outHasilHexa() {
        eksepsiInpHexa();
    }
    public static void outHasilOktal() {
        eksepsiInpHexa();
    }
    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 dahulu !");
            inpNama();//kembali input nama

        } catch (NumberFormatException nfe) {// dirun saat kesalahan formatnumber
            JOptionPane.showMessageDialog(null, name
                    + "bukan karakter !"
                    + "\nMasukkan karakter saja !");
            inpNama();

        }
    }
     // coding selanjutnya untuk konversi bilangan pecahan dan terbilang
String[] angka = {"", "Satu", "Dua", "Tiga",
        "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas"};

    private String keTerbilang(int a) {
        String bilang = "";
        int b = a / 100;
        if (b > 0) {
            bilang = angka[b] + " Ratus ";
            if (b == 1) {
                bilang = "Seratus ";
            }
            a %= 100;
        }
        if (a < 12) {
            bilang += angka[a];
        } else {
            b = a / 10;
            a %= 10;
            if (b == 1) {
                bilang += angka[a] + " Belas";
            } else {
                bilang += angka[b] + " Puluh " + angka[a];
            }
        }
        return bilang;
    }

    private String terbilang(long a) {
        int b;
        String bilang = "";
        String[] satuan = {"", " Ribu ", " Juta ", " Milyar ", " Trilyun ", " Quadrilyun ", " Quintilyun "};
        if (a > Math.pow(10, 20)) {
            return "Bilangan terlalu besar";
        }
        for (int i = 6; i > 0; i--) {
            b = (int) (a / Math.pow(10, i * 3));
            if (b > 0) {
                if (b == 1 && i == 1) {
                    bilang += " Seribu ";
                } else {
                    bilang += keTerbilang(b) + satuan[i];
                }
            }
            a %= Math.pow(10, i * 3);
        }
        bilang += keTerbilang((int) a);
        return bilang;
    }

    public static void outTerbilang() {
        inpTerbilang = JOptionPane.showInputDialog("Masukan Bilangan yang akan disebut : ");
        JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(inpTerbilang)),
                "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
    }

    public static void hasilPecahan() {
        int desimal;

        String str = JOptionPane.showInputDialog("Masukkan bilangan 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();
        inpKelamin();

        String[] pilihan = {"BINER", "HEXA", "OKTAL",
            "<< KELUAR >>"};
    //..."Infinite" loop, selesai jika System.exit(0)
        while (true) {
            int response = JOptionPane.showOptionDialog(
                null //Tengah window.
                , "Met Datang agan/aganwati "+name+" !!"
    + "\nPilih Konversi Bilangan dibawah ini?" //Pesan
                    , "Konversi Bilangan" //Judul Bar
            , JOptionPane.YES_NO_OPTION //tipe pilihan
            , JOptionPane.PLAIN_MESSAGE //tipe pesan
            , null
            , pilihan
            , 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:
                    hasilPecahan();
                    ;
                    break;
                case 5:
                    inpNama();
                    inpKelamin();
                    ;
                    break;
                case 6:
                    System.exit(0);
                    break;

                case -1://mengeksekusi keluaran agar tidak ke default
                    //antara tombol 3 dan close box -1 ditangani disini
                    System.exit(0);//keluar looping tapi
                default:
                    // jika kita disini ada kesalahan
                    JOptionPane.showMessageDialog(null,
                            "response salah" + response);
                    break;

            }
        }
    }

  
    public static void main(String[] args) {
        menuJOption();
    }
}


Hasil nya :
1. Akan muncul input dialog dari JoptionPane untuk menginputkan nama anda .

2.Jika di klik "Cancel",maka akan keluar seperti dibawah ini .


3.Jika nama tidak diisi atau kosong,maka akan keluar seperti ini .

 4.Maka isilah nama anda terlebih dahulu,lalu klik "OK"


5.Setelah itu akan muncul input dialog,untuk memasukkan Gender Anda.


6.Jika tidak diisi,maka akan muncul :

 7.Jika diisi dengan selain perempuan/laki-laki.


 maka akan muncul seperti ini.


8.Jadi masukkan perempuan/laki-laki saja.

 9.Lalu akan muncul pilihan menu untuk memililih konversi bilangan yg diinginkan.


Disini saya memilih "HEXA"
Pada saat ada input dialog untuk memasukkan bilangan desimalnya,jika tidak diisi/kosong,maka akan muncul seperti ini.

10.Lalu,masukkan bilangan yg mau di konversikan
contoh : 28 , lalu klik ok

 11. Maka hasilnya,akan seperti ini.


12.Setelah di klik OK,maka menu akan kembali pada menu konversi bilangan.


13.Jika di klik <<KELUAR>> Maka akan muncul input dialog untuk memasukkan bilangan yg akan disebut.

 Hasil terbilang nya adalah :

14.Jika di klik OK, maka akan kembali pada menu konversi bilangan.


Jika anda telah benar-benar selesai mengkonversi bilangan dan ingin keluar,maka klik tanda "X" pada pojok kanan atas dialog.


SELESAI ...
SELAMAT MENCOBA YA !!!

0 komentar:

Posting Komentar