Selasa, 11 September 2012

Menu Konversi Bilangan Menggunakan JOptionPane di Java




Ini adalah tugas Java membuat program mengkoversikan bilangan Decimal ke Biner, Hexa, Octal, Terbilang, Pecahan dengan JOptionPane. Nantinya akan muncul bersamaan yang satu muncul di Console dan yang sebagian muncul di Message Dialog, tentunya menggunakan software NetBeans :

Langkah yang harus dilakukan adalah :

1. Buka NetBeans dan buat project baru atau kalau sudah ada tinggal buat New Java Class.
2. Beri nama class tersebut dengan MenuDariJOption.
3. Ketikkan kode dibawah ini untuk membuat program.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Praktek1;
import javax.swing.JOptionPane;
/**
 *
 * @author NIZAR
 */
public class MenuDariJOption {
    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;
    public static void keBiner(int n) {
        if (n > 1) {
            keBiner(n / 2);
        }
        System.out.print(n % 2);
        binerHasil.append(n % 2);
    }

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

    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]);
        }
    }
    public static void inputDesJOption(){
        des=JOptionPane.showInputDialog("Masukkan Bilangan Desimal : ");
        try{
            if(des.isEmpty()){
                JOptionPane.showMessageDialog(null, "Bilangan Desimal Wajib diisi :)");
                inputDesJOption();
            }
        }
        catch(NullPointerException npa){
            JOptionPane.showMessageDialog(null, "Wajib di isi !!");
            inputDesJOption();
        }
    }
    public static void outHasilBiner() {
        inputDesJOption();
        try {//untuk melakukan penanganan kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Biner hasilnya : ");
            keBiner(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Biner hasilnya : " + binerHasil, "HASIL KONVERSI", 
JOptionPane.PLAIN_MESSAGE);
            // reset object binerHasil
            binerHasil = new StringBuilder();
        
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outHasilBiner();
        }
    }

    public static void outHasilHexa() {
        inputDesJOption();
        try {//untuk melakukan penanganan kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Hexa hasilnya : ");
            keHexa(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Hexa hasilnya : " + hexaHasil, "HASIL KONVERSI", 
JOptionPane.PLAIN_MESSAGE);
            hexaHasil = new StringBuilder();
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outHasilHexa();
        }
    }

    public static void outHasilOktal() {
        inputDesJOption();
        try {//untuk melakukan penanganan kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Oktal hasilnya : ");
            keOktal(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Oktal hasilnya : " + oktalHasil, "HASIL KONVERSI", 
JOptionPane.PLAIN_MESSAGE);
            oktalHasil = new StringBuilder();
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outHasilOktal();
        }
    }
    //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, "Nama Wajib Di isi !!");
            inpNama();
        }
    }
    //menampilkan input dialog jenis Kelamin (gender)
    public static void jenisKelamin(){
        gender=JOptionPane.showInputDialog("Masukkan Jenis Kelamin Anda (Pria/Wanita) : ");
        try{
            if(gender.isEmpty()){
                JOptionPane.showMessageDialog(null, "Jenis Kelamin Harus Di isi!!");
                jenisKelamin();
            }
        }
        catch(NullPointerException npt){
            JOptionPane.showMessageDialog(null, "Apa Jenis Kelamin anda??");
            jenisKelamin();
        }
        if ("Pria".equals(gender)) {
            kelamin="Bang, ";
        }
        else{
            if("Wanita".equals(gender)){
                kelamin="Nona, ";
            }
            else{
                JOptionPane.showMessageDialog(null, "Hanya bisa diisi 'Pria' / 'Wanita' !!");
                jenisKelamin();
            }
        }
        
    }
  
    //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 bilangannya !!");
                outTerbilang();
            } else {

                JOptionPane.showMessageDialog(null, new MenuDariJOption
().terbilang(new Long(sc)), "TERBILANG", 
JOptionPane.INFORMATION_MESSAGE);
            }
        } catch (NullPointerException not) {
            JOptionPane.showMessageDialog(null, "Jangan keluar dulu, harus diisi dulu.. !!");
            outTerbilang();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Hey '" + sc + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outTerbilang();
        }
    }
  
    public static void hasilPecahan() {
        int desimal;

        String str = JOptionPane.showInputDialog("Masukkan bilangan yang akan dipecah : ");
        try {
            if (str.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Isi bilangannya dulu donk");
                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, "Bilangan Wajib Di isi!!");
            hasilPecahan();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Hey '" + str + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            hasilPecahan();
        }
    }
    public static void kembaliMenu(){
        inpNama();
        jenisKelamin();
    }
    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:
                    System.exit(0);
                default:
                    JOptionPane.showMessageDialog(null, "response salah"
                                                    + response); break;
            }
        }
    }
    public static void main(String[] args){
        menuJOption();
    }

    
}

Setelah itu run dengan cara tekan Shit - F6
Akan terlihat seperti ini :




Lalu masukkan nama.



Tekan Ok. Akan muncul seperti ini.


Tekan Ok lagi.


Tinggal memilih Menu mana yang akan dipakai untuk mengkonversikan bilangan Decimal.
Dan ini adalah hasil dari Konversi Biner, Hexa, dan Octal muncul di console.




Dibawah ini merupakan konversi Pecahan.




Hasil dari konversi pecahan.

Yang ini konversi terbilang.




Hasil dari konversi terbilang.
Setelah di Ok, program akan kembali ke Interface awal. Apabila ingin mencoba tinggal diulangi langkah-langkah sebelumnya dan apabila sudah puas. Ada menu Keluar/Exit tinggal di Klik saja :)
Terimakasih kepada Bpk. Hadi Wijaya yang telah membimbing pelajaran Java saya semoga bermanfaat. Amin :)

Tidak ada komentar:

Posting Komentar