Menu Dari JOptionPane

selamat malam para pembaca sekalian..
kali ini Insan dapat tugas Java, di soal tertulis 8 soal.
dan ini jawabannyaa,,


tak kasih tau scriptnya dulu yaa..

package Praktek1;
import javax.swing.JOptionPane;
public class MenuDariJOption {
    private static String name;
    private static String gender;
    private static String jk;
    private static String des;
    private static int validDes;
    static StringBuilder Hasilbiner= new StringBuilder();
    static StringBuilder hexaHasil= new StringBuilder();
    static StringBuilder octalHasil= new StringBuilder();
    static String hi;
    private static int ji,ro,lu,pat,mo,nem,tu,wol,ngo,luh;
   
    public static void keBiner(int n){
    if(n>1){
        keBiner(n/2);
    }
    System.out.print(n%2);
    Hasilbiner.append(n%2);
    }
     public static void eksepsiInpBiner(){
    inputDesJOption();
        try {
        validDes=Integer.parseInt(des);
        keBiner(validDes); //parameter
        JOptionPane.showMessageDialog(null, des + "Binernya adalah "+Hasilbiner, "hasil konversi"
                , JOptionPane.PLAIN_MESSAGE);
        Hasilbiner = new StringBuilder();
    }
    catch (NumberFormatException rrr){
      JOptionPane.showMessageDialog(null, des +"bukan angka!!"
              +"\nMasukkan angka saja!!");
      eksepsiInpBiner();
    }
    }
     
     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 eksepsiInpHexa(){
    inputDesJOption();
        try {
        validDes=Integer.parseInt(des);
        keHexa(validDes); //parameter
        JOptionPane.showMessageDialog(null, des+"Hexanya adalah "+hexaHasil, "hasil konversi"
                , JOptionPane.PLAIN_MESSAGE);
        hexaHasil = new StringBuilder();
    }
    catch (NumberFormatException err){
      JOptionPane.showMessageDialog(null, "'"+des +"'"+"bukan angka!!"
              +"\nMasukkan angka saja!!");
      eksepsiInpHexa();
    }
    }
    
    public static void keOctal(int n){
        char[] daftarOctal={'0','1','2','3','4','5','6','7'};
    if(n>0){
        keOctal(n/8);
    System.out.print(daftarOctal[n%8]);
    octalHasil.append(daftarOctal[n%8]);
    }
    }
  public static void eksepsiInpOctal(){
    inputDesJOption();
        try {
        validDes=Integer.parseInt(des);
        keOctal(validDes); //parameter
        JOptionPane.showMessageDialog(null,des + "Oktalnya adalah "+octalHasil, "hasil konversi"
                , JOptionPane.PLAIN_MESSAGE);
        octalHasil = new StringBuilder();
    }
    catch (NumberFormatException brr){
      JOptionPane.showMessageDialog(null, des +"bukan angka!!"
              +"\nMasukkan angka saja!!");
      eksepsiInpOctal();
    }
    }
     
    public static void inputDesJOption(){
    des = JOptionPane.showInputDialog("Masukkan Bil Desimalnya= ");
    try{
        if(des.isEmpty()){
            JOptionPane.showMessageDialog(null, "Ga boleh kosong loh yaa!!");
            inputDesJOption();
        }
    }
    catch(NullPointerException rrr){
        JOptionPane.showMessageDialog(null, "eits, jgn kabur!");
        inputDesJOption();
    }
    }
    
    public static void inpNama(){
    name=JOptionPane.showInputDialog(null,
            "Masukkan nama anda: ");
    try{
        if(name.isEmpty()){
            JOptionPane.showMessageDialog(null,
                    "Hoee, Nama tidak boleh kosong!!");
            inpNama();//kembali input nama
        }
        else{
            for(int p=0;p<name.length();p++){
                if(!Character.isLetter(name.charAt(p))){
            JOptionPane.showMessageDialog(null, "Hooe, Tulisannya ga boleh 4L4Y ");
            inpNama(); //kembali input nama
        }
            }
    }
    }
     catch(NullPointerException npe){
         JOptionPane.showMessageDialog(null,
                 "Harap diisi Nama dulu dong!!");
         inpNama();//kembali input nama
     }
    }
    public static void inpGender(){
    jk=JOptionPane.showInputDialog("Jenis Kelamin");
    try{
        if(jk.isEmpty()){
            JOptionPane.showMessageDialog(null, "Isi dahulu ya!");
            inpGender();
        }
    }
    catch (NullPointerException npt){
        JOptionPane.showMessageDialog(null, "Jangan kabur dong, diisi dulu");
        inpGender();
    }
    if ("Laki-laki".equals(jk)){
        gender=" saudara, ";
    }
    else{
        if("Perempuan".equals(jk)){
        gender=" saudari, ";
        }
        else{
            JOptionPane.showMessageDialog(null, "isinya hanya Laki-laki dan Perempuan ya");
            inpGender();
        }
    }
    }
    
    //terbilang
    String[] angka={"","Satu","Dua","Tiga","Empat","Lima","Enam","Tujuh"
            +"delapan","Sembilan","Sepuluh","Sebelas"};
    private String ucap(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 a=6;a>0;a--){
            y = (int) (x/Math.pow(10, a*3));
        if(y > 0){
            if(y==1 && a ==1) bilang += " Seribu "; else bilang += ucap(y) + satuan[a];
        } x %= Math.pow(10, a*3);
    }
    bilang+=ucap((int)x);
    return bilang;
}
public static void outTerbilang(){
hi = JOptionPane.showInputDialog("Masukkan Bilangan : ");
try{
    if(hi.isEmpty()){
        JOptionPane.showMessageDialog(null, "Tidak Boleh Kosong!");
        outTerbilang();
    }
}
catch(NullPointerException err){
    JOptionPane.showMessageDialog(null, "Hayoo jangan kabuur");
    outTerbilang();
}
JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(hi)),"TERBILANG", JOptionPane.INFORMATION_MESSAGE);
}

public static void hasilPecahan(int desimal){
    String str=JOptionPane.showInputDialog("Masukkan bilangan yang dipecah : ");
    desimal=Integer.parseInt(str);
    
    ji=desimal/100000;
    desimal%=100000;
    
    ro=desimal/50000;
    desimal%=50000;
    
    lu=desimal/10000;
    desimal%=10000;
    
    pat=desimal/5000;
    desimal%=5000;
    
    mo=desimal/1000;
    desimal%=1000;
    
    nem=desimal/500;
    desimal%=500;
    
    tu=desimal/100;
    desimal%=100;
    
    wol=desimal/50;
    desimal%=50;
    
    ngo=desimal/10;
    desimal%=10;
    
    luh=desimal/1;
    desimal%=1;
}

public static void eksepsiPecahan(){
    try{
        hasilPecahan(validDes);
        JOptionPane.showMessageDialog(null, "Jumlah seratus ribuan ="+ji
                +"\nJumlah lima puluh ribuan = "+ro
                +"\nJumlah sepuluh ribuan = "+lu
                +"\nJumlah lima ribuan= "+pat
                +"\nJumlah seribuan= " +mo
                +"\nJumlah lima ratusan= " +nem
                +"\nJumlah seratusan= " +tu
                +"\nJumlah lima puluhan= " +wol
                +"\nJumlah puluhan= " +ngo 
                +"\nJumlah satuan= " +luh
         , "PECAHAN", JOptionPane.INFORMATION_MESSAGE);
    }
    catch (NumberFormatException ggg){
        JOptionPane.showMessageDialog(null, des +
                "bukan angka!" + "\n Masukkan angka saja!");
        eksepsiPecahan();
    }
}

public static void Menukembali(){
    inpNama();
    inpGender();
}
    public static void menuJOption(){
    // text untuk tombol
        inpNama();
        inpGender();
        String[] pilihan = {"BINER", "HEXA", "OKTAL","TERBILANG", "PECAHAN", "KEMBALI", "<<KELUAR>>"};
    //"infinite" loop, selesai jika System.exit(0)
        while (true){
            int response = JOptionPane.showOptionDialog(
                    null // tengah window.
                    , "Selamat Datang"+gender+""+name+"!"
                    + "\nPilih Konversi Bilangan dibawah ini?"// Pesan
                    , "Konversi Bilangan" //Judul Bar
                    , JOptionPane.YES_NO_OPTION //tipe pilihan
                    , JOptionPane.PLAIN_MESSAGE //tipe pesan
                    , null                      //Icon(none)
                    , pilihan                  //tombol text
                    , null   //label tombol default
                    );
            //menggunakan switch untuk mengecek tombol yang ditekan.
            switch (response){
                case 0:
                    eksepsiInpBiner();
                    break;
                case 1:
                    eksepsiInpHexa();
                    break;
                case 2:
                    eksepsiInpOctal();
                    break;
                case 3:
                    outTerbilang();
                case 4:
                    eksepsiPecahan();
                case 5:
                    Menukembali();
                case 6:
                case -1:
                    System.exit(0);
            //antara tombol (3) dan close box(-1) ditangani disini.
                default:
            //Jika kita disini ada kesalahan,
                    JOptionPane.showMessageDialog(null,
                    "response salah" + response); break;
            }
        }
    }
    public static void main(String[] args){
    menuJOption();
    }
    
}

hasil :

Tampilan Awal

Isi Nama

Apabila nama di cancel atau dikosongi

inputan nama tidak boleh seperti ini

kalo input nama seperti di atas maka

setelah input nama sudah benar,
maka akan ada tampilan seperti ini,

 Lalu, insan isi dengan Perempuan ya, soalnya insan kan perempuan. :)

kalo jenis kelaminnya bukan Perempuan atau Laki-laki maka tampilannya


Kalo di cancel

and then, tampilannya seperti ini

disini Insan inputan desimalnya 14



Tampilan binernya

Tampilan Hexanya


Tampilan Oktalnya

Lalu tampilan terbilangnya adalah

untuk tampilan Pecahannya sbb


kan di tampilan biner,hexa,dan octal ada button cancelnya, kalo ditekan tampilan sbb


lalu diatas juga ada button kembali, kalau di tekan tampilannya kembali ke awal: 


kalo keluar, yaa keluar dari program.


maaf kalo rada berantakan, efek sudah malam. :D
besok kalo ada kuota lagi Insan edit deh.
tapi ini sudah lumayan jelas kaan?? :p
saran dibutuhkan yaa. :)





NewerStories OlderStories Home

0 comments:

Post a Comment