Senin, 10 September 2012

Pada postingan sebelumnya, saya sudah menuliskan tentang Menu Konversi Bilangan, tetapi pada postingan kali ini Menu Konversi Bilangan tersebut menggunakan JOptionPane.
Proses untuk mengkonversikan bilangan tersebut awalnya pengguna diminta untuk mengisi nama, lalu mengisi jenis kelamin pengguna apakah laki-laki / perempuan (L / P), setelah itu barulah pengguna dapat memilih menu untuk mengkonversikan bilangan tersebut.
Pilihan menu konversi bilangan pada kali ini ada 7 opsi, yaitu : Biner, Hexa, Oktal, Terbilang, Pecahan, Kembali, dan Keluar. Untuk hasil Konversi Bilangan Biner, Hexa, Oktal akan tampil secara bersamaan di console serta di Message Dialog.

Berikut ini adalah proses pembuatan program tersebut, cekidot :D

1. Buka software Netbeans, buat New Java Class. beri nama misalnya : Menu_dari_JOptionPane.java
2. Kemudian ketikkan code di bawah ini. Ketikkan dibawah nama package anda.
Spoiler for code:
import javax.swing.JOptionPane;
3. Selanjutnya tuliskan code berikut ini dibawah nama Class anda.
Spoiler for code:
private static String name;
private static String des;
private static String gender;
private static String kelamin;
private static int validDes;
static StringBuilder binerHasil= new StringBuilder();
static StringBuilder hexaHasil= new StringBuilder();
static StringBuilder oktalHasil= new StringBuilder();
static String sc;
4. Selanjutnya tuliskan code berikut yg berfungsi sebagai proses konversi bilangan ke Biner, Hexa, dan Oktal.
Spoiler for code:
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) {//int n : parameter
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'};
if (n > 0) {
keOktal(n / 8);
System.out.print(daftarOktal[n % 8]);
oktalHasil.append(daftarOktal[n % 8]);
}
}
5. Selanjutnya tuliskan code berikut yg berfungsi untuk memproses saat menginputkan Bilangan Desimal.
Spoiler for code:
public static void inputDesJOption(){
des=JOptionPane.showInputDialog("Masukkan Bilangan Desimal : ");
try{
if(des.isEmpty()){
JOptionPane.showMessageDialog(null, "Bilangan Desimal Wajib Diisi !");
inputDesJOption();
}
}
catch(NullPointerException npa){
JOptionPane.showMessageDialog(null, "Wajib Di Isi !!");
inputDesJOption();
}
}
6. Selanjutnya tuliskan code berikut untuk menampilkan hasil dari proses Konversi Bilangan.
Spoiler for code:
public static void outHasilBiner() {
inputDesJOption();
try {//untuk melakukan penanganan kesalahan
validDes = Integer.parseInt(des);
System.out.print("\n Bilangan Desimal : " + des + " Konversi Binernya Adalah : ");
keBiner(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan Desimal : " + des + " Konversi Binernya Adalah : " + binerHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
// reset object binerHasil
binerHasil = new StringBuilder();

} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "'" + des + "'"
+ " .... Bukan Angka !"
+ "\nMasukkan Angka Saja !");
outHasilBiner();
}
}

public static void outHasilHexa() {
inputDesJOption();
try {//untuk melakukan penanganan kesalahan
validDes = Integer.parseInt(des);
System.out.print("\n Bilangan Desimal : " + des + " Konversi Hexanya Adalah : ");
keHexa(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan Desimal : " + des + " Konversi 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 {//untuk melakukan penanganan kesalahan
validDes = Integer.parseInt(des);
System.out.print("\n Bilangan Desimal : " + des + " Konversi Oktalnya Adalah : ");
keOktal(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan Desimal : " + des + " Konversi Oktalnya Adalah : " + oktalHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
oktalHasil = new StringBuilder();
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "'" + des + "'" + " .... Bukan Angka !" + "\nMasukkan Angka Saja !");
outHasilOktal();
}
}
7. Selanjutnya tuliskan code berikut untuk menampilkan Input Dialog nama dan gender.
Spoiler for code:
//menampilkan input dialog nama
public static void inpNama(){
name=JOptionPane.showInputDialog("Masukkan Nama Anda : ");
try{
if(name.isEmpty()){
JOptionPane.showMessageDialog(null, "Nama Tidak Boleh Kosong !");
inpNama();
}
}
catch(NullPointerException npe){
JOptionPane.showMessageDialog(null, "Nama Wajib Diisi !");
inpNama();
}
}
//menampilkan input dialog jenis Kelamin (gender)
public static void jenisKelamin(){
gender=JOptionPane.showInputDialog("Masukkan Jenis Kelamin Anda (L/P) : ");
try{
if(gender.isEmpty()){
JOptionPane.showMessageDialog(null, "Jenis Kelamin Harus Diisi!");
jenisKelamin();
}
}
catch(NullPointerException npt){
JOptionPane.showMessageDialog(null, "Tolong Pilih Jenis Kelamin Anda !");
jenisKelamin();
}
if ("L".equals(gender)) {
kelamin="Agan, ";
}
else{
if("P".equals(gender)){
kelamin="Aganwati, ";
}
else{
JOptionPane.showMessageDialog(null, "Hanya Bisa Diisi L / P !");
jenisKelamin();
}
}
}
8. Selanjutnya tuliskan code berikut untuk melakukan proses 'Terbilang' dan menampilkannya.
Spoiler for code:
//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 ", $22 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 Disebut : ");
try {
if (sc.isEmpty()) {
JOptionPane.showMessageDialog(null, "Isi Dong Bilangannya !");
outTerbilang();
} else {

JOptionPane.showMessageDialog(null, new Menu_dari_JOptionPane ().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
}
} catch (NullPointerException not) {
JOptionPane.showMessageDialog(null, "Jangan Keluar Dulu, Harus Diisi Dulu !");
outTerbilang();
} catch (NumberFormatException nae) {
JOptionPane.showMessageDialog(null, "Hey '" + sc + "'" + " .... Bukan Angka !" + "\nMasukkan Angka Saja !");
outTerbilang();
}
}
9. Selanjutnya tuliskan code berikut yg berfungsi untuk melakukan proses 'Pecahan' dan menampilkannya.
Spoiler for code:
public static void hasilPecahan() {
int desimal;

String str = JOptionPane.showInputDialog("Masukkan Bilangan Yang Akan Dipecah : ");
try {
if (str.isEmpty()) {
JOptionPane.showMessageDialog(null, "Isi Dong 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);
}
} catch (NullPointerException not) {
JOptionPane.showMessageDialog(null, "Bilangan Wajib Diisi !");
hasilPecahan();
} catch (NumberFormatException nae) {
JOptionPane.showMessageDialog(null, "Hey '" + str + "'" + " .... Bukan Angka !" + "\nMasukkan Angka Saja !");
hasilPecahan();
}
}
10. Selanjutnya tuliskan code berikut yg berfungsi untuk memproses pilihan menu 'Kembali' yaitu kembali menginputkan nama dan gender.
Spoiler for code:
public static void kembaliMenu(){
inpNama();
jenisKelamin();
}
11. Selanjutnya tuliskan code berikut untuk menampilkan pilihan Menu.
Spoiler for code:
public static void menuJOpthon(){
inpNama();
jenisKelamin();
String[] pilihan = {"BINER", "HEXA", "OKTAL", "TERBILANG", "PECAHAN", "KEMBALI", "KELUAR"};
while (true) {
int response = JOptionPane.showOptionDialog(
null
, "Selamat Datang "+kelamin+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;
}
}
}
12. Selanjutnya adalah langkah terakhir yaitu tuliskan code dibawah ini. Meskipun code dibawah ini sangat singkat jika dibandingkan dengan code2 diatas, tetapi code berikut sangat penting untuk menampilkan hasil dari semua code2 diatas.
Spoiler for code:
public static void main(String[] args){
menuJOption();
}
Jika sudah selesai, tekan Shift + F6 untuk menjalankan program

Hasil program yang telah dijelaskan diatas ada di bawah ini !
Tampilan awal, yaitu menginputkan nama anda
Jika inputan kosong / tidak diisi apa2 lalu tekan OK , maka muncullah message ini


Jika Anda menekan tombol close / tombol cancel, maka muncul message ini





Setelah anda mengisi nama dengan benar, maka muncullah input gender
Message ini akan muncul jika anda tdk mengisi inputan lalu menekan OK
Message ini akan muncul jika anda menekan tombol close / cancel















Message ini muncul jika anda menuliskan selain tulisan " L / P "
Jika anda telah mengisi gender dengan benar, maka akan keluar seperti ini. Contoh saya memilih gender L maka sebelum nama saya ada tulisan Agan.

Misalnya kita memilih menu biner, maka akan keluar seperti ini 
Jika Anda tidak mengisi apa2 lalu menekan OK, maka muncullah seperti ini
Jika Anda memencet tombol cancel / tombol exit maka muncullah seperti ini
Message ini akan muncul bila anda salah menuliskan angka 
Ini adalah hasil konversi desimal ke biner yang muncul pada message dialog
Dan ini hasil konversi desimal ke biner yang muncul pada console










0 comments:

Posting Komentar

Jika ada Komentar , Tulis Di Sini