Feeds RSS

Senin, 10 September 2012

KONVERSI bilangan menggunakan JOptionPane ~

postingan kali ini gak jauh beda sama postingan yg sebelum-sebelumnya, mungonversikan bilangan!
cuman, yg ini kita tambah dengan pemanggilan "JOptionPane"

nih codingnya *cekidooots!*



package praktek1;
import javax.swing.JOptionPane;

/**
 *
 * @author Revi
 */
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();
    }
}


ntar outputnya kayak begini nih....

kalo uda di run (Shift+f6) window pertama yg muncul kayak begini nih ;;)

terus kalo uda nginputin nama, bakal keluar window yg seperti diatas ini...

ini kalo gender-nya milih cewek tulisannya "Selamat Datang Saudar(i), blablabla"
kalo gender yg dipilih cowok tulisan yg bakal keluar "Selamat Datang Saudar(a), blablabla"
lalu kita tinggal memilih button button yg uda disediakan utk mengkonversikan bilangan...

sebagai contoh kita masukkan angka 18 sebagai angka desimal...

kalo nanti di "OK" maka akan keluar output dari hasil pengkonverisan ke biner misalnya...

kalo ini ke hexa...

yang ini ke oktal...

ini kalo terbilangnya, jadi hurufnya yg jadi output...

kalo ini pecahannya...
S E L A M A T - M E N C O B A ^^


*i think enough for me, thankyou ;;)*

0 bacotan:

Posting Komentar