Selasa, 11 September 2012

JAVA - Input data dan konversi bilangan dengan JOptionPane

Kali ini saya akan posting tentang cara untuk konversi bilangan dengan cara menginputkan data diri dan ada tambahan untuk menyebutkan bilangan yang diinputkan dengan kalimat. dan program ini sedikit lebih panjang dari program yang sebelumnya


berikut ini codingnya : 
1. letakkan coding berikut di bawah nama package anda
import javax.swing.JOptionPane;
2. lalu tuliskan coding berikut di bawah nama class anda
    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. kemudian tuliskan coding berikut untuk proses konversi bilangan Biner, Hexa dan Octal
 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[] Hexa = {'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(Hexa[n % 16]);
            hexaHasil.append(Hexa[n % 16]);
        }
    }
    public static void keOktal(int n) {
        char[] Oktal = {'0', '1', '2', '3', '4', '5', '6', '7'};
        if (n > 0) {
            keOktal(n / 8);
            System.out.print(Oktal[n % 8]);
            oktalHasil.append(Oktal[n % 8]);
        }
    } 
4. letakkan coding berikut untuk menginputkan bilangan desimal
public static void inputDesJOption(){
        des=JOptionPane.showInputDialog("Masukkan Bilangan Desimal : ");
        try{
            if(des.isEmpty()){
                JOptionPane.showMessageDialog(null, "Maaf, Bilangan Desimal tidak boleh kosong !!");
                inputDesJOption();
            }
        }
        catch(NullPointerException npa){
            JOptionPane.showMessageDialog(null, "Maaf, Harus Inputkan Data !!");
            inputDesJOption();
        }
    }
 
5. tuliskan coding berikut untuk menampilkan proses konversi bilangan

            public static void outHasilBiner() {
        inputDesJOption();
        try {//untuk mengatasi kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : " + des + "Hasil Konversi Bilangan  : ");
            keBiner(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + "Hasil Konversi Bilangan : " + binerHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
            // reset object
            binerHasil = new StringBuilder();
       
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " Maaf Inputan Anda bukan angka !!"
                    + "\nTolong Masukkan Angka !!");
            outHasilBiner();
        }
    }
    public static void outHasilHexa() {
        inputDesJOption();
        try {//untuk mengatas kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : " + des + " Hasil Konversi Bilangan : ");
            keHexa(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " Hasil Konversi Bilangan : " + hexaHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
            hexaHasil = new StringBuilder();
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + "Maaf Inputan Anda Bukan Angka !!"
                    + "\nTolong Masukkan Angka !!");
            outHasilHexa();
        }
    }
    public static void outHasilOktal() {
        inputDesJOption();
        try {//untuk mengatasi kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : " + des + " Hasil Konversi Bilangan : ");
            keOktal(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " Hasik Konversi Bilangan : " + oktalHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
            oktalHasil = new StringBuilder();
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " Maaf, Inputan Anda Bukan Angka !!"
                    + "\nTolong Masukkan Angka !!");
            outHasilOktal();
        }
    } 
     
6. coding berikut untuk menampilkan input nama dan gender
        //menampilkan input dialog nama
    public static void inpNama(){
        name=JOptionPane.showInputDialog("Inputkan Nama : ");
        try{
            if(name.isEmpty()){
                JOptionPane.showMessageDialog(null, "Maaf, Nama Harus Diisi !!");
                inpNama();
            }
        }
        catch(NullPointerException npe){
            JOptionPane.showMessageDialog(null, "Harap Inputkan Nama Anda !!");
            inpNama();
        }
    }
    //menampilkan input dialog jenis Kelamin (gender)
    public static void jenisKelamin(){
        gender=JOptionPane.showInputDialog("Inputkan Jenis Kelamin Anda : ");
        try{
            if(gender.isEmpty()){
                JOptionPane.showMessageDialog(null, " Jenis Kelamin Harus Diisi ???");
                jenisKelamin();
            }
        }
        catch(NullPointerException npt){
            JOptionPane.showMessageDialog(null, "Harap inputkan jenis kelamin ???");
            jenisKelamin();
        }
        if ("Pria".equals(gender)) {
            kelamin="Agan, ";
        }
        else{
            if("Wanita".equals(gender)){
                kelamin="Aganwati, ";
            }
            else{
                JOptionPane.showMessageDialog(null, "Hanya bisa diisi Pria dan Wanita saja !!");
                jenisKelamin();
            }
        }
       
    } 
7. coding berikut untuk menampilkan proses terbilang dan menampilkannya
  //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 yang anda inputkan 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 di tampilkan : ");
        try {
            if (sc.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Maaf, inputan anda kosong, Harap Diisi dahulu !!");
                outTerbilang();
            } else {
                JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
            }
        } catch (NullPointerException not) {
            JOptionPane.showMessageDialog(null, "Harap Diisi Dahulu Sebelum Keluar !!");
            outTerbilang();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Maaf '" + sc + "'"
                    + " Maaf Inputan Anda Bukan Angka !!"
                    + "\nTolong Masukkan angka !!");
            outTerbilang();
        }
    } 
8. coding berikut untuk menampilkan hasil pecahan
 public static void hasilPecahan() {
        int desimal;
        String str = JOptionPane.showInputDialog("Inputkan bilangan yang akan dipecah : ");
        try {
            if (str.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Maaf, Inputan Anda Kosong, Harap Diisi Dahulu !!");
                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, "Harap Isi Dahulu Bilangannya !!");
            hasilPecahan();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Maaf '" + str + "'"
                    + " Inputan Anda Bukan Angka  !!"
                    + "\nTolong Masukkan Angka !!");
            hasilPecahan();
        }
    } 
9. coding berikut untuk melooping nama dan gender
 public static void kembaliMenu(){
        inpNama();
        jenisKelamin();
    } 
10. coding berikut untuk menampilkan 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 Messagebox
                             , 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;
            }
        }
    } 
11. coding yang terakhir adalah untuk menampilkan hasil dari coding yang telah di buat
  public static void main(String[] args){
        menuJOption();
    }



0 komentar:

Posting Komentar