Selasa, 11 September 2012

JAVA: Menu Menggunakan

 Membuat menu JOption dalam JAVA

Dalam tutorial ini kita akan membuat JOption dan beberapa konversi.
Juga ada program yang akan mengeja bilangan/huruf.
Langsung saja kita berlari ke script bila ada pertanyaan tinggal ditanyakan.


package Praktek1;


import javax.swing.JOptionPane;


public class MenuDariJOption {

  //Fields
    private static String sc;
    private static String _name;
    private static String _des;
    private static String _gender;
    private static int _validDes;
  //~Fields

  //Constructor
    //Class constructor here
  //~Constructor

  //Methods
    public static void hasilPecahan() {
        int desimal;

        String str = JOptionPane.showInputDialog("Masukkan bilangan yang akan dipecah : ");
        try {
            if (str.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Isikan bilangannya");
                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);
            }
            menuJOption();
        } 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();
        }
    }
    String [] angka ={"","satu","dua","tiga","empat","lima","enam","tujuh","delapan","sembilan","sepuluh","sebelas"};
    public static void outTerbilang(){
    sc = JOptionPane.showInputDialog("Inputkan Bilangan yang kamu ingin ketahui penulisannya *maksimal Quadriliyun* ");
    JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
    }
    private String terbilang(long  x){
        int y;
        String bilang="";
        String[] satuan={""," Ribu "," Juta "," Milyar "," Trilyun "," Quadrilyun "};
        if(x > Math.pow(10, 20)) return "Melebihi kapasitas";
        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;
    }
    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;
    }
    public static String Bilangkan(int number){
      String result = "";
      String angka = Integer.toString(number);
      String[] bilangan = {
        "",
        "SATU",
        "DUA",
        "TIGA",
        "EMPAT",
        "LIMA",
        "ENAM",
        "TUJUH",
        "DELAPAN",
        "SEMBILAN",
        ""
      };
      int x=0;
      int a=0;
      int previous=0;
     
      for(int i=0;i<angka.length();i++){
       
        String suffix="";
        String prefix="";       
       
        int n = Integer.parseInt(Character.toString(angka.charAt(i)));       
       
        x = angka.length()-i-1;
               
       
        switch(x){
          case 0:
            if(previous == 1&&n!=0){             
              suffix="BELAS";
              if(n==1){
                prefix="SE";
                n=10;
              }
            }else{
              suffix="";
              prefix="";             
            }
            result += " "  + prefix +  bilangan[n] + suffix;
            break;
          case 1:           
            if(n!=1){
              prefix="";
              suffix="PULUH";
              if(previous!=0&&n==0){
                suffix="";
              }
            }else{
              int next = Integer.parseInt(Character.toString(angka.charAt(i+1)));
              if(next==0){
              prefix="SE";
              suffix="PULUH";             
              }
              n=10;
            }           
            result += " "  + prefix +  bilangan[n] + suffix;
            break;
          case 2:
            if(n!=1){
              prefix="";
              suffix="RATUS";
              if(previous!=0&&n==0){
                suffix="";
              }
            }else{                           
              prefix="SE";
              suffix="RATUS";                           
              n=10;
            }           
            result += " "  + prefix +  bilangan[n] + suffix;
            break;
          case 3:
            if(previous == 1&&n!=0){             
              suffix="BELAS";
              if(n==1){
                prefix="SE";
                n=10;
              }
            }else{
              suffix="";
              prefix="";             
            }
            result += " "  + prefix +  bilangan[n] + suffix;
           
            if(n!=1){
              prefix="";
              suffix="RIBU";
              if(previous!=0&&n==0){
                suffix="";
              }
            }else{                           
              prefix="SE";
              suffix="RIBU";                           
              n=10;
            }           
            result += " "  + prefix +  bilangan[n] + suffix;
            break;         
        }
        previous = Integer.parseInt(Character.toString(angka.charAt(i)));
        a++;
      }
     
      return result;
    }
   
    public static String ConvertAP(int number,int base){
      String nBase ="";     
      do{
        int mod = number%base;
        number/=base;
        if(mod < 10){
          nBase += mod;
        }else{
          nBase += (char)(mod-10+'A');
        }       
      }while(number >= 1);
     
      String fBase = "";
      for(int i=nBase.length()-1;i>=0;i--){
        fBase+=nBase.charAt(i);
      }
      return fBase;
    }
   
   
    public static void keBiner(int n){
      if(n>1){
        keBiner(n/2);
      }
      System.out.print(n%2);
    }
    public static void inputDesJOption(){
      _des = JOptionPane.showInputDialog("Masukkan Bil.Desimal = ");
    }
    public static void eksepsiInpBiner(){
      inputDesJOption();
      try{
        _validDes = Integer.parseInt(_des);
        String decBin = ConvertAP(_validDes, 2);
        JOptionPane.showMessageDialog(null, _validDes + " dalam binary adalah " + decBin);
      }catch(NumberFormatException ex){
        if(_des == null){
          JOptionPane.showMessageDialog(null, "Tolong Masukkan angka saja");
        }else{
          if(_des.isEmpty()){
            JOptionPane.showMessageDialog(null, "Inputtan anda kosong");
          }else{
            JOptionPane.showMessageDialog(null, _des + " bukan angka!\r\nMasukkan angka saja");
          }
        }
        eksepsiInpBiner();
      }
    }
    public static void eksepsiInpOctal(){
      inputDesJOption();
      try{
        _validDes = Integer.parseInt(_des);
        String decBin = ConvertAP(_validDes, 8);
        JOptionPane.showMessageDialog(null, _validDes + " dalam octal adalah " + decBin);
      }catch(NumberFormatException ex){
        if(_des == null){
          JOptionPane.showMessageDialog(null, "Tolong Masukkan angka saja");
        }else{
          if(_des.isEmpty()){
            JOptionPane.showMessageDialog(null, "Inputtan anda kosong");
          }else{
            JOptionPane.showMessageDialog(null, _des + " bukan angka!\r\nMasukkan angka saja");
          }
        }
        eksepsiInpOctal();
      }
    }   
    public static void eksepsiInpHexadecimal(){
      inputDesJOption();
      try{
        _validDes = Integer.parseInt(_des);
        String decBin = ConvertAP(_validDes, 16);
        JOptionPane.showMessageDialog(null, _validDes + " dalam hexadecimal adalah " + decBin);
      }catch(NumberFormatException ex){
        if(_des == null){
          JOptionPane.showMessageDialog(null, "Tolong Masukkan angka saja");
        }else{
          if(_des.isEmpty()){
            JOptionPane.showMessageDialog(null, "Inputtan anda kosong");
          }else{
            JOptionPane.showMessageDialog(null, _des + " bukan angka!\r\nMasukkan angka saja");
          }
        }
        eksepsiInpHexadecimal();
      }
    }
    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, "Nama hanya bisa mengandung huruf");                   
                    inpNama();
                    break;
                }
            }
        }
      }catch(NullPointerException ex){
        JOptionPane.showMessageDialog(null, "Harap diisi nama dulu donk");
        inpNama();
      }
    }
    public static void inpKelamin(){
      String[] jGender = {"LAKI-LAKI","WANITA"};
      int response;
      response = JOptionPane.showOptionDialog(null, "Pilih jenis kelamin anda:", "jenis kelamin", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, jGender, null);
      switch(response){
        case 0:
          _gender = "L";
          break;
        case 1:
          _gender = "W";
          break;
        case -1:
          _gender = null;
          JOptionPane.showMessageDialog(null, "Anda harus menentukan jenis kelamin anda");
          inpKelamin();
      }
    }   
    public static void menuJOption(){
      inpNama();
      inpKelamin();
      String salutation = !"L".equals(_gender) ? "Mbak" : "Mas";
     
      String[] pilihan = {"Biner","Hexadecimal","Octal","Kembali Ke Nama","Bilangkan","Pecahan","<< Keluar >>"};
      while(true){
        int response = JOptionPane.showOptionDialog(null, "Selamat datang " +salutation + " " + _name + "\r\nPilih konversi bilangan dibawah ini:", "konversi",JOptionPane.CLOSED_OPTION,JOptionPane.QUESTION_MESSAGE,null, pilihan,null);
        switch(response){
          case 0:
            eksepsiInpBiner();
            break;
          case 1:           
            eksepsiInpHexadecimal();
            break;
          case 2:
            eksepsiInpOctal();
            break;
          case 3:
            menuJOption();
            break;
          case 4:
              outTerbilang();
            break;
          case 5:
              hasilPecahan();
          case 6:
          case-1:
              System.exit(0);
              break;
          default:
            JOptionPane.showMessageDialog(null, "Response tidak terduga " + response);break;
        }
      }
    }
   
   
    public static void main(String[] args){          
     menuJOption();
     
      //menuJOption();
    }
  //~Methods
}




















1 komentar:

Posting Komentar

Twitter Delicious Facebook Digg Stumbleupon Favorites More