Senin, 24 September 2012

Konversi Biner, Hexa, Oktal di JAVA ~

Diposting oleh cynthia cancer dewantya di 06.09
Hai hai, lama nih nggak posting :D
Kali ini, kita akan belajar dan memahami lagi tentang Inputan JOptionPane yg lebih rumit.
Oke, proses nya adalah pertama kita harus mengisi nama next kita mengisi gender then kita akan dihadapkan pada 7 pilihan menu dan kita dapat mengisi sesuai keinginan kita :D
          7 pilihan menu itu sendiri terdiri dari Biner, Hexa, Oktal, Terbilang, Pecahan, Kembali, dan Keluar.
Oh iyaa, jangan kaget jugaa !!
Hasil Konversi Bilangan Biner, Hexa, Oktal akan muncul double yaitu dalam bentuk Message Dialog dan bentuk Console.

Okela, langsung aja kita simak cara nya :))



*Step 1 .
--> Kita buka NetBeans terlebih dahulu.

*Step 2.
--> Kita buka PratikumJAVA -- SourcePage -- Praktek1

*Step 3.
--> Next kita buat New Java Class, kita beri nama InputanJOptionPane_HexaBiner.

*Step 4.
--> Oke, skarang kita mulai proses coding nya seperti di bawah ini.

package Praktek1;

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



import javax.swing.JOptionPane;
/**
 *
 *
 */
public class InputanJOptionPane_HexaBiner {
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);
              // binerHasil.append("\033");
          }

           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("Inputkan bilangan desimal");
            try {
            if (des.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Wajib di isi !!");
                inputDesJOption();
            }
         } catch (NullPointerException npa) {
            JOptionPane.showMessageDialog(null, "Wajib diisi !!");
            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();
          }
      }
    public static void SelamatDatang(){
        JOptionPane.showMessageDialog(null, "Selamat datang kawan :) Selamat menikmati aplikasi ini :D");
    }
    public static void inpName(){
    SelamatDatang();
    inpNama();}
//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();
            }
 else{
                for(int i=0;i<name.length();i++){
                    if(!Character.isLetter(name.charAt(i))){
                        JOptionPane.showMessageDialog(null, "DILARANG ALAY ");
                        inpNama();
                    }
                }
 }
        } catch (NullPointerException npe) {
            JOptionPane.showMessageDialog(null, "Harap diisi nama dulu !!");
            inpNama();
        }
    }
    //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, "Harus diisi yaa .... Jenis Kelamin ???");
                jenisKelamin();
            }
        } catch (NullPointerException npt) {
            JOptionPane.showMessageDialog(null, "Apa jenis kelamin anda ???");
            jenisKelamin();
        }
        if ("cowok".equals(gender)) {
            kelamin = "Bro, ";
        } else {
            if ("cewek".equals(gender)) {
                kelamin = "Girl, ";
            } else {
                JOptionPane.showMessageDialog(null, "Hanya bisa diisi cowok dan cewek saja !!");
                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 InputanJOptionPane_HexaBiner().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
            }
        } catch (NullPointerException not) {
            JOptionPane.showMessageDialog(null, "Jangan keluar dulu, wajib diisi !!");
            outTerbilang();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Eh '" + sc + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outTerbilang();
        }
    }
    public static void hasilPecahan() {
        int desimal;

        String str = JOptionPane.showInputDialog("Masukkan bilangan desimal : ");
        try {
            if (str.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Tidak boleh kosong");
                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 bilangan nya");
            hasilPecahan();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Eh '" + str + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            hasilPecahan();
        }
    }
public static void kembaliMenu() {
        inpNama();
        jenisKelamin();
    }
public static void menuJOption() {
        inpName();
        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:
                    JOptionPane.showMessageDialog(null, "Thank's for your visit and goodbye :D");
                    System.exit(0);
                default:
                    JOptionPane.showMessageDialog(null, "response salah"
                            + response);
                    break;
            }
        }
    }
public static void main(String[] args) {
        menuJOption();
    }
}

*Step 5.
--> Sekarang kita run dengan shift+f6

----> Mudah kan :)) Simak hasil nya yukk <----

~Hasil 1
--> Ini coding keseluruhannya


~Hasil 2
--> Setelah menekan shift+f6, ini tampilan yg muncul.
--> Kemudian kita isi nama dan gender sesuai keinginan kita :)



--> INGAAATT !!! masukan nama dan gender dengan abjad jangan nama ALAY seperti angka, spasi dan lain - lain.
--> Example :

--> Jika nama di isi seperti itu, akan muncul Mesage Dialog seperti ini :


--> Dan, jika gender juga kita isi seperti di bawah ini . . .


--> Akan muncul peringatan Message Dialog seperti di bawah ini  . .


~Hasil 3
-->  Kemudian kita akan masuk ke dalam 7 menu utama . .


~Hasil 4
--> Oke, kita akan mecoba satu persatu dimulai dari Biner . .


--> Hasil nya akan mucul dalam 2 versi yaitu Message Dialog dan Console . .


~Hasil 5
--> Next yang ke 2 adalah Hexa . .


--> Hasil nya akan mucul dalam 2 versi juga yaitu Message Dialog dan Console . .


~Hasil 6
--> Yang ke 3 adalah Oktal . .


--> Hasil nya akan mucul dalam 2 versi juga yaitu Message Dialog dan Console . .


~Hasil 7
--> Lanjut kita akan mencoba yang terbilang . .



--> Untuk terbilang dan pecahan, Hasil akan muncul dalam Message Dialog saja :))


~Hasil8
--> Sekarang kita coba Pecahan . .


--> Seperti tebilang, Hasilnya akan muncul dalam Message Dialog saja :))


 ~Hasil 9
--> Oiyaa, untuk tombol KEMBALI fungsinya adalah untuk kembali ke menu awal ketika kita meng-inputkan nama . .

~Hasil 10
--> Okee, setelah semua menu sudah kita coba, next kita klik KELUAR untuk mengakhiri aplikasi inii :))



** Naahh, mudah kan :D So, selamat mencobaa yaa :)) **



0 komentar:

Posting Komentar

 

cin cin cin . . Template by Ipietoon Blogger Template | Gift Idea