Sabtu, 08 September 2012

Konversi Bilangan Menggunakan JOptionPane

Diposting oleh    di    Tidak ada komentar:
 
package PraktikumJava;

/**
 *
 * @author toLe
 */
import java.awt.HeadlessException;
import java.lang.NumberFormatException;
import java.math.BigDecimal;
import javax.swing.JOptionPane;
public class BEJOBEJI {
    private static String name;
        private static String kelamin;
        private static String jeniskelamin;
        private static String gender;
        private static String des;
        private static int validDes;
        private static int hasil;
        private static int jumlah;
        static String ff;
      
        private static StringBuilder A= new StringBuilder();
        private static StringBuilder L= new StringBuilder();
        private static StringBuilder F= new StringBuilder();
        private static StringBuilder I= new StringBuilder(); //pembagi hasil 1
        private static StringBuilder pembagi10= new StringBuilder();
        private static StringBuilder pembagi100= new StringBuilder();
        private static StringBuilder pembagi1000= new StringBuilder();
        private static StringBuilder pembagi10000= new StringBuilder();
        private static StringBuilder pemecahHasil= new StringBuilder();

        private final String pembagi_sepuluh="10";
        private final String pembagi_seratus="100";
        private final String pembagi_seribu="1000";
        private final String pembagi_sejuta="1000000";
        private final String pembagi_semilyar="1000000000";
        private final String pembagi_setrilyun="1000000000000";


public static void keBiner(int n){
                                                                 //konversi kebiner
        if (n>1){
        keBiner(n/2);
        }
        System.out.print(n%2);
        A.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 > 1) {
        keHexa(n / 16);

        System.out.print(daftarHexa[n % 16]);

        L.append(daftarHexa[n%16]);
        }
        }
public static void keOctal(int n) {
    int sisaBagi = n % 8;
        if (n > 0) {
        keOctal((n- sisaBagi) / 8);

        System.out.print(n % 8);

        F.append(n%8);
        }
        }

public static void inputDesJOption(){
        des = JOptionPane.showInputDialog("Masukkan " + "Bilangan Desimalnya = ");
        try{
        if(des.isEmpty()){
        JOptionPane.showMessageDialog(null,
        "Tolong inputkan Angka saja, karena wajib !");
        inputDesJOption();//memberi input nama
        }

        }catch(NullPointerException alfi){
        JOptionPane.showMessageDialog(null,
        "Ayolah, Tolong diinputkan !!");
        inputDesJOption();//kembali input nama
        }
        }
public static void eksepsiInpBiner(){
        inputDesJOption();

        try {
            validDes=Integer.parseInt(des);
                JOptionPane.showMessageDialog(null, "Hasil Konversi dari " +des+ " adalah");
                keBiner(validDes);
                    System.out.println();

        }catch(NumberFormatException faqs){
                JOptionPane.showMessageDialog(null, des
                    +" Itu bukan angka bos, konsentrasi dikit lah !"
                    + "\nMasukkan angka saja nggak usah aneh-aneh !");
        eksepsiInpBiner();

        }
        }

public static void eksepsiInpHexa(){
        inputDesJOption();
        try {
            validDes=Integer.parseInt(des);
                JOptionPane.showMessageDialog(null, "Hasil Konversi dari " +des+ " adalah ");
            keHexa(validDes);
            System.out.println();

        }catch(NumberFormatException faqs){
                JOptionPane.showMessageDialog(null, des
                    +" Itu bukan angka bos, konsentrasi dikit lah !"
                    + "\nMasukkan angka saja nggak usah aneh-aneh !");
        eksepsiInpHexa();
        }
        }


        public static void eksepsiInpOctal(){
        inputDesJOption();
        try {
            validDes=Integer.parseInt(des);
                JOptionPane.showMessageDialog(null, "Hasil Konversi dari " +des+ " adalah");
            keOctal(validDes);
                    System.out.println();

        }catch(NumberFormatException faqs){
                JOptionPane.showMessageDialog(null, des
                    +" Itu bukan angka bos, konsentrasi dikit lah !"
                    + "\nMasukkan angka saja nggak usah aneh-aneh !");
        eksepsiInpOctal();
        }
        }
      
        public static void outHasilBiner(){
       inputDesJOption();
        try{//untuk melakukan penanganan kesalahan
            validDes=Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : "+des+" jika dijadikan Biner hasilnya : ");
            keBiner(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+""
                    + " jika dijadikan Biner hasilnya : "+A,
                    "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
        }
        catch(NumberFormatException alfi){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " Itu bukan angka bos, konsentrasi dikit lah !"
                    + "\nMasukkan angka saja nggak usah aneh-aneh !");
            outHasilBiner();
        }
        }
        public static void outHasilHexa(){
      inputDesJOption();
        try{//untuk melakukan penanganan kesalahan
            validDes=Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : "+des+" jika dijadikan Hexa hasilnya : ");
            keHexa(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+""
                    + " jika dijadikan Hexa hasilnya : "+L,
                    "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
        }
        catch(NumberFormatException alfi){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " Itu bukan angka bos, konsentrasi dikit lah !"
                    + "\nMasukkan angka saja nggak usah aneh-aneh !");
            outHasilHexa();
        }
        }
        public static void outHasilOctal(){
        inputDesJOption();
        try{//untuk melakukan penanganan kesalahan
            validDes=Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : "+des+" jika dijadikan Octal hasilnya : ");
            keOctal(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+""
                    + " jika dijadikan Octal hasilnya : "+F,
                    "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
        }
        catch(NumberFormatException alfi){
            JOptionPane.showMessageDialog(null, "'"+des+"'"
                    + " Itu bukan angka bos, konsentrasi dikit lah !"
                    + "\nMasukkan angka saja nggak usah aneh-aneh !");
            outHasilOctal();
        }
        }

public static void inpNama(){
        name=JOptionPane.showInputDialog("Masukkan "+ "Nama Anda :");

        try{
        if(name.isEmpty()){
            JOptionPane.showMessageDialog(null,
                "Ayo isi namanya, wajib !");
            inpNama();//memberi input nama
        }

        }catch(NullPointerException faqs){
            JOptionPane.showMessageDialog(null,
                "Nggak mau masukin nama yaudah, bye !");
            System.exit(0);//keluar
        }
        }

public static void jeniskelamin(){
            gender=JOptionPane.showInputDialog("Masukkan Jenis Kelamin Anda (L/P) : ");
        try{
        if(gender.isEmpty()){
            JOptionPane.showMessageDialog(null, "Harus diisi ini !");
            jeniskelamin();
        }
        }
        catch(NullPointerException alfi){
            JOptionPane.showMessageDialog(null, "Masukkan Jenis Kelamin Anda :");
            jeniskelamin();
        }
        if ("L".equals(gender)) {
            kelamin="om, ";
        }
        else{
        if("P".equals(gender)){
            kelamin="tante, ";
        }
        else{
            JOptionPane.showMessageDialog(null, "Hanya bisa diisi L/P saja !!");
            jeniskelamin();
        }
        }

        }

public static void menuJOption(){
        //...Text untuk tombol.
        inpNama();
        jeniskelamin();
        String[] pilihan = {"BINER", "HEXA", "OCTAL", "TERBILANG", "PECAHAN" , "<< KEMBALI >>", "<< KELUAR >>"};
        while (true)
        {
        int response = JOptionPane.showOptionDialog(
        null //tengah window.
        , "Selamat Datang " + kelamin +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:
                        outHasilBiner(); // tombol biner
                            break;
                    case 1:
                        outHasilHexa(); // tombol hexa
                            break;
                    case 2:
                        outHasilOctal(); // tombol octal
                            break;
                    case 3:
                        outTerbilang(); // tombol terbilang
                            break;
                    case 4:
                        outPembagi(); // tombol pecahan
                            break;
                    case 5:
                        inpNama();
                            break;
                     case 6:
                                    //antara tombol (3) dan close box(-1) ditangani disini.
                        System.exit(0); //keluar looping
                            default:

        //...Jika disini kita ada kesalahan,
        JOptionPane.showMessageDialog(null, "response salah"
        + response); break;
        }
        }
        }
      
        //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(){
    ff = JOptionPane.showInputDialog("Masukkan Bilangan yang akan disebut : ");
    JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(ff)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
    }


  

  

public static void outPembagi(){
        int desimal;

        String str=JOptionPane.showInputDialog("Masukkan bilangan : ");
        desimal=Integer.parseInt(str);
        int satu, dua, tiga, empat,
        lima, enam, tujuh, delapan,
        sembilan, sepuluh, sebelas,
        duabelas, tigabelas;

        satu=desimal/100000; //data pertama
        desimal%=100000;

        dua=desimal/50000; //data kedua
        desimal%=50000;

        tiga=desimal/20000; //data ketiga
        desimal%=20000;

        empat=desimal/10000; //data keempat
        desimal%=10000;

        lima=desimal/5000; //data kelima
        desimal%=5000;

        enam=desimal/2000; //data keenam
        desimal%=2000;

        tujuh=desimal/1000; //data ketujuh
        desimal%=1000;

        delapan=desimal/500; //data kedelapan
        desimal%=500;

        sembilan=desimal/200; //data kesembilan
        desimal%=200;

        sepuluh=desimal/100; //data kesepuluh
        desimal%=100;

        sebelas=desimal/50; //data kesebelas
        desimal%=50;

        duabelas=desimal/10; //data keduabelas
        desimal%=10;

        tigabelas=desimal/1; //data ketigabelas
        desimal%=1;


        JOptionPane.showMessageDialog(null,"seratus ribuan = "+satu
        +"\n lima puluh ribuan = "+dua
        +"\n dua puluh ribuan = "+tiga
        +"\n sepuluh ribuan = "+empat
        +"\n lima ribuan = "+lima
        +"\n dua ribuan = "+enam
        +"\n seribuan = "+tujuh
        +"\n lima ratusan = "+delapan
        +"\n dua ratusan = "+sembilan
        +"\n seratusan = "+sepuluh
        +"\n lima puluhan = "+sebelas
        +"\n lima satuan = "+duabelas
        +"\n satuan = "+tigabelas
        , "PECAHAN", JOptionPane.INFORMATION_MESSAGE);
        }



        public static void main(String[]args){ //sebagai pengeksekusi
        menuJOption();
        }
}



Diatas adalah scriptnya, dan dibawah ini adalah gambar hasil dari script diatas ...

  
Apabila setelah menekan shift+f6 akan muncul tampilan yang menyuruh anda untuk menginputkan nama.



Tampilan diatas akan muncul jika kita menekan tombol CANCEL atau menekan tombol "x".






Tampilan diatas akan muncul jika kita tidak mengisi nama.





Tampilan diatas akan muncul apabila setelah kita mengisi nama, dan kita disuruh memilih antara L/P.




Tampilan diatas akan muncul apabila kita menekan tombol CANCEL atau menekan tombol "x".


 Tampilan diatas akan muncul apabila kita tidak mengisikan jenis kelamin/gender.


Tampilan diatas akan muncul apabila setelah kita mengisikan jenis kelamin/gender kita. Dan kita bisa menekan tombol-tombolnya.





Akan muncul setelah kita menekan salah satu dari tombol diatas kecuali KEMBALI DAN KELUAR.




Apabila menekan CANCEL atau "x".


Akan keluar apabila tidak diisi apapun.





Apabila diisi bukan angka, contoh diisi kata Jombang, akan muncul tampilan seperti itu.





Tampilan diatas akan muncul apabila kita memilih tombol BINER, HEXA, OCTAL, TERBILANG DAN PECAHAN.

Setelah kita menekan OK akan muncul persetujuan lagi untuk mengkonversikan dari desimal ke biner.


desimal ke biner dengan bilangan desimal 10.



desimal ke hexa dengan bilangan desimal 10






desimal ke octal dengan bilangan desimal 10





Akan muncul ketika kita menginputkan bilangan desimal 2511 dan dikonversi pemecah akan muncul tampilan seperti diatas.



Terimakasih, Semoga Bermanfaat.




Tidak ada komentar:

Posting Komentar

 
Copyright © 2014 Budayakan Kebersamaan All Right Reserved
Designed by OddThemes