Selasa, 11 September 2012

Mawarku :3


Blog blog blog...

Hari ini punya temen baru di rumah loh,selain mbah uti,panda :3 hihihi.  Ada dua kuntum tepatnya. Aku punya mawar lalalala ~. Beli di selekta kemaren sih. Sebenernya mbah uti ku ndak suka bunga-bungaan kayak gitu lebih suka daun-daun yang pokoknya keliatan ijo-ijo hihihi.  Tapi gimana ya aku udah terlanjur jatuh hati sama mawar di selekta kemaren sih #eciyee.

Seneng banget sama mawar. Because it is beautifull thing in the world. So sweet bangeet. Apalagi kalo cowok yang ngasih berasa sesyuatu pasti hihihi :3

Seneng seneng seneng punya temen baru di rumah,jadi punya kegiatan baru juga ngurusin si mawar. Ehem ehem dalam dekat ini emang niat buat manjain diri dengan sesuatu yang menyenangkan. Fun pokoknya,karena belakangan ini cobaannya sesyuatu beratnya,galau badai dueh huahaha :3

“mawar,biarkan aku menjadi sepertimu. Tetap tegar walaupun badai menghadang. Jauhkanlah aku dari orang yang akan menyakitiku lagi. dengan alasan apapun karena aku ingin sendiri di sini hingga rasa sakit ini lenyap. Walaupun akupun tak tahu berapa lama. Menunggu seseorang yang kan mencabut duri-duri ini bukan malah mencabikku lebih dalam lagi ...”













 


Membuat menu dengan menggunakan Java JOptionPane


Haloo semuanya...
Kali ini vicky akan mengajari bagaimana sih membuat menu Java menggunakan JoptionPane
Menu ini akan berisi konversi bilangan desimal-biner desimal-hexa desimal-oktal lalu juga ada terbilang dengan menyebutkan angka dan pecahan untuk memaparkan suatu bilangan.
setelah itu kita akan membuat pilihan untuk kembali ke awal serta pilihan keluar(exit)
Ayo kita liat coding nya

public class MenuDariJOption {
    private static String name;
    private static String des;
    private static int validDes;
    private static String jeniskelamin;
    private static String panggilan;
    private static String bil;
    static StringBuilder binerHasil= new StringBuilder();
    static StringBuilder hexaHasil= new StringBuilder();
    static StringBuilder oktalHasil= new StringBuilder();

Setelah itu masukkan script untuk  konversi bilangan :
public static void keBiner(int n){
        if(n>1){
            keBiner(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'};
    int sisaBagi = n % 16;
    if (n > 0) {
        keHexa((n - sisaBagi) / 16);
        hexaHasil.append(daftarHexa[n % 16]);
    }
    }
    public static void keOktal(int n){
        int sisaBagi = n % 8;
    if (n > 0) {
        keOktal((n - sisaBagi)/8);
        oktalHasil.append(n % 8);
    }
    }

Lalu masukkan script untuk  inputan angkanya :
public static void inputDesJOption(){
        des=JOptionPane.showInputDialog("Masukkan Bil. Desimalnya = ");
        try{
            if(des.isEmpty()){
                JOptionPane.showMessageDialog(null, "Isi dengan angka dulu!!");
                inputDesJOption();//kembali input angka
            }
        }catch(NullPointerException npa){
            JOptionPane.showMessageDialog(null, "Isi dulu dong!!");
            inputDesJOption();
        }
    }

Masukkan juga script untuk mengeluarkan hasil konversinya, di sini hasil konversi akan ditampilkan pada sebuah message dialog. :
public static void outHasilBiner() {
        inputDesJOption();
        try {
            validDes = Integer.parseInt(des);
            keBiner(validDes);
            JOptionPane.showMessageDialog(null, "Desimal : " + des + " binernya adalah : " + binerHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
            binerHasil = new StringBuilder();
       
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outHasilBiner();
        }
    }
    public static void outHasilHexa() {
        inputDesJOption();
        try {
            validDes = Integer.parseInt(des);
            keHexa(validDes);
            JOptionPane.showMessageDialog(null, "Desimal : " + des + " hexanya adalah : " + hexaHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
            hexaHasil = new StringBuilder();
       
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outHasilHexa();
        }
    }
    public static void outHasilOktal() {
        inputDesJOption();
        try {
            validDes = Integer.parseInt(des);
            keOktal(validDes);
            JOptionPane.showMessageDialog(null, "Desimal : " + des + " oktalnya adalah : " + oktalHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
            oktalHasil = new StringBuilder();
       
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outHasilOktal();
        }
    }
Lalu masukkan script untuk menginputkan nama dan jenis kelamin :
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, "Diisi nama dulu dong!!");
            inpNama();//kembali input nama
        }
    }
    public static void jeniskelamin(){
    jeniskelamin=JOptionPane.showInputDialog(
"Masukan Jenis Kelamin (cowok/cewek)");
    try{
            if(jeniskelamin.isEmpty()){
                JOptionPane.showMessageDialog(null, "Harus diisi lho!!");
                jeniskelamin();
            }
        }
        catch(NullPointerException npt){
            JOptionPane.showMessageDialog(null, "Isi dulu dong!!");
            jeniskelamin();
        }
    if ("cowok".equals(jeniskelamin)) {
            panggilan="Agan, ";
        }
        else{
            if("cewek".equals(jeniskelamin)){
                panggilan="Aganwati, ";
            }
            else{
                JOptionPane.showMessageDialog(null, "Hanya bisa diisi cowok dan cewek!!");
                jeniskelamin();
    }
    }
    }
Seperti saya jelaskan di atas, ada option untuk terbilang dan pecahan. Berikut script-nya :
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() {
        bil = JOptionPane.showInputDialog("Masukan Bilangan yang akan disebut : ");
        try {
            if (bil.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Isi dulu dengan bilangan !!");
                outTerbilang();
            } else {

                JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(bil)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
            }
        } catch (NullPointerException not) {
            JOptionPane.showMessageDialog(null, "Harus diisi dulu !!");
            outTerbilang();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "'" + bil + "'"
                    + " bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outTerbilang();
        }
    }
    public static void hasilPecahan() {
        int desimal;

        String str = JOptionPane.showInputDialog("Masukkan bilangan yang akan dipecah : ");
        try {
            if (str.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Kok kosong ?? Isi dulu ya.. !!");
                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);
            }
        } catch (NullPointerException not) {
            JOptionPane.showMessageDialog(null, "Isi dulu bilangannya !!");
            hasilPecahan();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "'" + str + "'"
                    + " bukan angka !!"
                    + "\nMasukkan angka saja !!");
            hasilPecahan();
        }
    }
Setelah itu, masukkan script berikut untuk option kembali (mulai kembali dari mengisi nama) :
public static void kembaliMenu(){
        inpNama();
        jeniskelamin();
    }
Selanjutnya masukkan script untuk menampilkan menu-nya :
public static void menuJOption(){
        //... Text untuk tombol.
        inpNama();
        jeniskelamin();
        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 "+panggilan+" "+name+" !! "
                    + "\nPilih Konversi Bilangan di bawah 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 yg ditekan.
            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:
                    //... antara tombol (6) dan close box(-1) ditangani di sini.
                    System.exit(0); //keluar looping, tapi..
                default:
                    //... jika kita di sini ada kesalahan,
                    JOptionPane.showMessageDialog(null, "response salah "+ response);break;
            }
        }
    }
Dan terakhir masukkan script berikut. Script yang pendek, tapi paling penting :
public static void main(String[] args) {
        menuJOption();
    }
}
Ini contoh dari output pecahan


Ini contoh putput terbilang

 Selamat mencoba :D