Minggu, 09 September 2012

Konversi Bilangan,Terbilang & Pecahan

Pada sesi ini saya akan post.kan program konversi bilangan dan menampilkan terbilang dan pecahan dari suatu bilangan desimal. Berikut langkah-langkahnya :
1. Buka netbeans anda dan buat java class baru
2. Lalu tuliskan deklarasi berikut :
3. Setelah itu ketikkan coding dibawah ini untuk memproses konversi ke hexa,octal dan desimal serta untuk menampilkannya :
public static void tampilBiner(int n) {
                 if (n > 1) {
                     tampilBiner(n / 2);
                 }
              System.out.print(n % 2);
              binerHasil.append(n % 2);
              // binerHasil.append("\033");
          }

           public static void tampilHexa(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) {
                           tampilHexa(n / 16);
                           System.out.print(daftarHexa[n % 16]);
                           hexaHasil.append(daftarHexa[n % 16]);
                       }
            }

            public static void tampilOctal(int n) {
                  char[] daftarOktal = {'0', '1', '2', '3', '4', '5', '6', '7'};
                         if (n > 0) {
                            tampilOctal(n / 8);
                            System.out.print(daftarOktal[n % 8]);
                            oktalHasil.append(daftarOktal[n % 8]);
                  }
             }
            public static void inputDesJOption() {
              des = JOptionPane.showInputDialog("Ketikkan Bilangan Desimal : ");
            try {
            if (des.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Desimal Wajib Diisi Ya !!");
                inputDesJOption();
            }
         } catch (NullPointerException npa) {
            JOptionPane.showMessageDialog(null, "ISI DONG<JANGAN KOSONG !!!");
            inputDesJOption();
            }
        }
            public static void outHasilBiner() {
          inputDesJOption();
          try {//untuk melakukan penanganan kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : " + des + " dalam Biner hasilnya : ");
            tampilBiner(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " dalam Biner hasilnya : " + binerHasil, "Hasil Konversi", JOptionPane.PLAIN_MESSAGE);
            // reset object binerHasil
            binerHasil = new StringBuilder();

        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " .... tidak dikenal !!"
                    + "\nKetik angka aja dong !!");
            outHasilBiner();
          }
      }

    public static void outHasilHexa() {
        inputDesJOption();
        try {//untuk melakukan penanganan kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : " + des + " dalam Hexa hasilnya : ");
            tampilHexa(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " dalam Hexa hasilnya : " + hexaHasil, "Hasil Konversi", JOptionPane.PLAIN_MESSAGE);
            hexaHasil = new StringBuilder();
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " .... tidak dikenal !!"
                    + "\nKetik angka aja dong !!");
            outHasilHexa();
          }
      }

    public static void outHasilOktal() {
        inputDesJOption();
        try {//untuk melakukan penanganan kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : " + des + " dalam Octal hasilnya : ");
            tampilOctal(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " dalam Octal hasilnya : " + oktalHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
            oktalHasil = new StringBuilder();
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " .... tidak dikenal !!"
                    + "\nKetik angka aja dong !!");
            outHasilOktal();
          }
      }

4. Ketikkan coding dibawah ini untuk menampilkan dialog nama
public static void inpNama() {
        name = JOptionPane.showInputDialog("Siapa nama Anda : ");
        try {
            if (name.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Gak Punya Nama Ya ??!!!");
                inpNama();
            }
        } catch (NullPointerException npe) {
            JOptionPane.showMessageDialog(null, "Kalau Punya Isi Dong !!");
            inpNama();
        }
    }

5. Ketikkan coding dibawah ini yang fungsinya untuk menampilkan dialog jenis kelamin
public static void jenisKelamin() {
        gender = JOptionPane.showInputDialog("Apa Jenis Kelamin Anda ? (isi huruf kecil semua hanya cewek/cowok) : ");
        try {
            if (gender.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Waji Isi .... Jenis Kelamin ???");
                jenisKelamin();
            }
        } catch (NullPointerException npt) {
            JOptionPane.showMessageDialog(null, "Apa jenis kelamin kamu ???");
            jenisKelamin();
        }
        if ("cowok".equals(gender)) {
            kelamin = "Tuan, ";
        } else {
            if ("cewek".equals(gender)) {
                kelamin = "Nona, ";
            } else {
                JOptionPane.showMessageDialog(null, "Disini Bukan Area Waria !! :p ");
                jenisKelamin();
            }
        }

    }

6. Dan coding dibawah ini digunakan untuk memproses penampilan terbilang dari desimal yang diinputkan

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 hendak disebut : ");
        try {
            if (sc.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Eh kenapa bilangannya kosong ?!!");
                outTerbilang();
            } else {

                JOptionPane.showMessageDialog(null, new Finna().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
            }
        } catch (NullPointerException not) {
            JOptionPane.showMessageDialog(null, "Isi dulu dong, jangan keluar dulu .. !!");
            outTerbilang();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Hei '" + sc + "'"
                    + " .... tidak dikenal !!"
                    + "\nKetik angka aja dong !!");
            outTerbilang();
        }
    }




 7. Yang diubawah ini untuk memproses dan menampilkan tampilan pecahan

public static void hasilPecahan() {
        int desimal;

        String str = JOptionPane.showInputDialog("Bilangan berapa yang ingin dipecah ? ");
        try {
            if (str.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Lho,apa yang mau dipecah kalau kosong,isi dong !!");
                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, "Isi dulu dong, jangan keluar dulu .. !!");
            hasilPecahan();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Hei '" + str + "'"
                    + " .... tidak dikenal !!"
                    + "\nKetik angka aja dong !!");
            hasilPecahan();
        }
    }


8. Sedangkan codning berikut untuk mengatur tampilan JOptionPane dan dialog yang ada pada program
public static void kembaliMenu() {
        inpNama();
        jenisKelamin();
    }
public static void menuJOption() {
        inpNama();
        jenisKelamin();
        String[] pilihan = {"Biner", "Hexa", "Octal", "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, "wrong response"
                            + response);
                    break;
            }
        }
    }
public static void main(String[] args) {
        menuJOption();
    }
}


















HASIL TAMPILAN PROGRAM

Gambar satu tampilan utk input nama :

Gambar dua untuk input jenis kelamin :
Gambar tiga untuk memilih konversi yang diinginkan :
Gambar empat untuk menginputkan bilangan desimal :
Gambar lima untuk menampilkan hasil konversi yang berlaku untuk menampilkan biner,hexa dan octal :
Gambar enam untuk memasukkan angka jika anda awalnya memilih untuk menampilkan terbilang dari suatu desimal :

Gambar tujuh untuk menampilkan hasil tampilan untuk terbilang suatu desimal :

Gambar delapan untuk menampilkan dialog input untuk menginputkan desimal yang akan dipecah jika anda memilih menu pecahan :

Gambar sembilan untuk menampilkan hasil pecahan dari bilangan yang diinputkan :
Jika anda menekan tombol close atau cancel pada dialog input nama,maka akan muncul tampilan ini :
Jika anda menekan tombol close atau cancel pada dialog input jenis kelamin,maka akan muncul tampilan ini :

Jika anda menulis kata selain cowok atau cewek pada dialog input jenis kelamin,maka akan muncul tampilan :
Jika anda menekan tombol kembali pada dialog menu,maka anda akan masuk kembali untuk menginputkan nama. Jika anda menekan tombol keluar,maka program akan selesai.

Nah,itu tadi coding programnya,semoga bermanfaat :)