Senin, 10 September 2012

PostHeaderIcon konversi bilangan menggunakan JOptionpane

postingan ini sama dengan menu "konversi bilangan" namun yang sekarang kita tambah dengan pemanggilan JOptionpane

ini nih codingnya


package praktek1;
import javax.swing.JOptionPane;
public class JOptionkonversibilangan {
   // pendeklarasian var
private static String name;
    private static String des;
    private static String gender;
    private static int validDes;
    static StringBuilder binerHasil= new StringBuilder();
    static StringBuilder hexaHasil= new StringBuilder();
    static StringBuilder oktalHasil= new StringBuilder();
    static String sc;
//proses konversi
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){
    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','8'};
        if(n>0){
            keHexa(n/8);
            System.out.print(daftarOktal[n%8]);
            oktalHasil.append(daftarOktal[n%8]);
        }
    }
//penginputan desimal
public static void inputDesJOption(){
    des=JOptionPane.showInputDialog("Masukkan " + "Bil.Desimalnya = ");
    try{
        if(des.isEmpty()){
            JOptionPane.showMessageDialog(null, "Inputan angka tidak boleh kosong!");
            inputDesJOption(); //kembali input angka
        }
    }catch(NullPointerException npe){
        JOptionPane.showMessageDialog(null, "Harap diisi angka terlebih dahulu!!");
        inputDesJOption();// kembali input angka
    }
    }
//pengekspresian
public static void eksepsiInpBiner(){
    inputDesJOption();
    try {
        validDes=Integer.parseInt(des);
        System.out.print("\nDesimal dari "+des+ ", Binernya adalah = ");
        keBiner(validDes);
        System.out.println("\n");
        
    }catch(NumberFormatException nfe){
        JOptionPane.showMessageDialog(null, des+" bukan angka! "+ "\nMasukkan angka saja !");
        eksepsiInpBiner();
    }
    }
    public static void eksepsiInpHexa(){
    inputDesJOption();
    try {
        validDes=Integer.parseInt(des);
        System.out.print("\nDesimal dari "+des+ ", Hexanya adalah = ");
        keHexa(validDes);
        System.out.println("\n");
        
    }catch(NumberFormatException nfe){
        JOptionPane.showMessageDialog(null, des+" bukan angka ! "+ "\nMasukkan angka saja !");
        eksepsiInpHexa();
    }
    }
    public static void eksepsiInpOktal(){
    inputDesJOption();
    try {
        validDes=Integer.parseInt(des);
        System.out.print("\nDesimal dari "+des+ ", Oktalnya adalah = ");
        keOktal(validDes);
        System.out.println("\n");
        
    }catch(NumberFormatException nfe){
        JOptionPane.showMessageDialog(null, des+" bukan angka!! "+ "\nMasukkan angka saja!!");
        eksepsiInpOktal();
    }
    }
//output proses konversi
public static void outHasilBiner(){
    eksepsiInpBiner();
    }
     public static void outHasilHexa(){
    eksepsiInpHexa();
    }
     public static void outHasilOktal(){
    eksepsiInpOktal();
    }
//penginputan nama
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 dulu dong !");
        inpNama();//kembali input nama
    }
    }
//menampilkan input dialog jenis Kelamin 
    public static void jenisKelamin()
{
  // menampilkan pilihan gender
  Object[] options = { "cewek", "cowok" };
  int choice = JOptionPane.showOptionDialog(null, 
      "Apa jenis kelamin kamu?", 
      "Jenis Kelamin?", 
      JOptionPane.YES_NO_OPTION, 
      JOptionPane.PLAIN_MESSAGE, 
      null, 
      options, 
      options[0]);
  try{
            if (choice == JOptionPane.YES_OPTION)
  {
    gender="saudari, ";
    menuJOption1();
  }
  else if(choice == JOptionPane.NO_OPTION)
  {
      gender="saudara, ";
      menuJOption1();
  }
        }
        catch(NullPointerException npe){
            JOptionPane.showMessageDialog(null, "Harap diisi terlebih dahulu !!");
            inpNama();
        }
}
// untuk penghitungan bilangan 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 disebutkan : ");
    JOptionPane.showMessageDialog(null, new JOptionkonversibilangan().terbilang(new Long(sc)), "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);
    } 
        
// untuk reset
public static void kembaliMenu(){
        inpNama();
        jenisKelamin();
    }
//ini untuk menu dari konversi bilangan
public static void menuJOption(){
        inpNama();
        jenisKelamin();
        String[] pilihan = {"biner", "hexa", "oktal", "terbilang", "pecahan", "kembali", "keluar"};
        while (true) {
            int response = JOptionPane.showOptionDialog(
                               null                       
                             , "Selamat Datang "+gender+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;
            }
        }
    }

// pemanggilan data menuJOption untuk jenis kelamin
public static void menuJOption1(){
          String[] pilihan = {"biner", "hexa", "oktal", "terbilang", "pecahan", "kembali", "keluar"};
        while (true) {
            int response = JOptionPane.showOptionDialog(
                               null                       
                             , "Selamat Datang "+gender+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;
            }
        }
    }

//untuk pemanggilan seluruh method
public static void main (String[] args){
    menuJOption();
    }
}




daaan ini hasil gambarnya

- menginputkan nama


-jenis kelamin kamu


-selamaat dataang







-jika memilih salah satu dari opsidiatas (biner,hexa,oktal)


-jika tidak ada inputan bilangan


-jika inputan bukan angka





-inilah hasilnya jika inputan benar




-jika anda memilih hasil "terbilang"



-hasil "terbilang"


-jika anda memilih opsi "pecahan"

-hasil "pecahan"





-jika anda memilih opsi "kembali" maka anda kembali di perintahkan untuk menuliskan nama anda
- jika anda memilih opsi "exit" maka anda keluar

0 komentar:

Posting Komentar

About Me

Foto Saya
Rima P Lestari
Pegawai kantoran yang bermimpi menjadi happy mom working at home
Lihat profil lengkapku

Labels

Diberdayakan oleh Blogger.

Followers