Share

Senin, 17 September 2012

Konverter Bilangan, Terbilang & Pecahan full JOptionPane [FINAL]


Salam salam buat semua kawan-kawan, hehehe :D Setelah semingguan puasa posting (hehehe.. soalnya posting terakhir [JAVA] Konverter Bilangan full Scanner udah semingguan yang lalu postingnya) kali ini SyarifMoklet mau posting lagi :D Sekarang postingnya juga konverter bilangan, tapi disini kita ada bonusnya yaitu menu terbilang untuk membaca bilangan, dan pecahan rupiah untuk memecah uang dalam rupiah serta ada juga pecahan dalam bilangan desimal (satuan,puluhan,ratusan,dst.).
Oke, dari pada bosen baca-baca, lihat dulu screenshot nya aja ya :D

  1. Ini screenshot Dialog awalnya, yaitu inputan nama
  2. Jika dialog diclose atau dicancel
  3. Jika dikosongi
  4. Jika inputan nama didahului angka (contoh: 45SYARIF)
  5. Jika inputan benar, akan muncul dialog Pilih Jenis Kelamin, ini digunakan untuk penentuan sapaan (agan/sist/bapak/ibu)
  6. Jika dicancel atau diclose
  7. Jika sudah memilih jenis kelamin, maka dibawa inputan umur (untuk penentuan sapaan, jika dibawah 30 : agan/sist, jika diatas 30 Bapak/Ibu)
  8. Jika dicancel
  9. Jika dikosongi
  10. Jika inputan mengandung huruf
  11. Jika inputan >50, muncul pesan error
  12. Jika inputan benar, akan ditampilkan menu utama
  13. Tampilan menu konversi bilangan desimal
  14. Tampilan inputan desimal
  15. Jika dicancel atau inputan mengandung huruf
  16. Hasil konversi
  17. Berikut tampilan menu Membilang & Pecahan
  18. Hasil terbilang
  19. Hasil pecahan rupiah
  20. Hasil pecahan desimal

Sekarang ane share codingnya, buat file Konversi_Bilangan_JenisKelamin_Scanner_Full.java di package Praktik1; berikut codingnya...

  ******KONVERSI BILANGAN JOptionPane and Terbilang,pecahan Bilangan and Uang******
  * SEMUA Inputan dan Output menggunakan JOptionPane
  * Terbilang untuk membaca bilangan (maksimal 1 milyar)
  * Pecahan Bilangan desimal adalah >> satuan, puluhan, ratusan, ribuan, dst.
  * Pecahan unang menurut pecahan uang di Indonesia, digunakan pecahan terbesar dahulu
  */
  package Praktik1;
import javax.swing.JOptionPane;
/** * f projects 2012 * @author SYARIF-FIRAYZ * AHMAD SYARIF ROSIDY MOKLET'20 * 2 RPL 4 / 01 */
public class Konversi_Bilangan_JOption_JK_TB { private static String nama; private static String sapaan; private static String age; private static String jenis_kl; public static int gender; private static int des; private static int validDes; private static StringBuilder hasil; public static void main(String ftm[]){ inpNama(); } public static void inpNama() { nama = JOptionPane.showInputDialog(null,"Siapa nama anda ?","Input nama",JOptionPane.QUESTION_MESSAGE); try{ //TIDAK BOLEH DIDAHULUI ANGKA if(nama.isEmpty()){ JOptionPane.showMessageDialog(null,"Nama tidak boleh kosong","Error!", JOptionPane.ERROR_MESSAGE); inpNama(); } else if(nama.matches("^([0-9]{1,})|([0-9]{1,})+([a-zA-Z_]{1,})")){ JOptionPane.showMessageDialog(null,"Tidak boleh didahului angka","Notice!", JOptionPane.INFORMATION_MESSAGE); inpNama(); } else{ inpJK(); } /* SAMA SEKALI TANPA ANGKA for(int f=0;f<nama.length();f++){ if(Character.isDigit(nama.charAt(f))){ JOptionPane.showMessageDialog(null,"Tidak boleh mengandung angka","Notice!", JOptionPane.INFORMATION_MESSAGE); inpNama(); } } inpJK(); */ } catch(NullPointerException f){ JOptionPane.showMessageDialog(null,"Jangan di Cancel","Error!", JOptionPane.ERROR_MESSAGE); inpNama(); } } public static void inpJK() { String[] pilihan = {"Laki-laki","Perempuan"}; gender = JOptionPane.showOptionDialog(null ,"Jenis Kelamin anda?" ,"Pilih Jenis Kelamin" ,JOptionPane.YES_NO_CANCEL_OPTION ,JOptionPane.QUESTION_MESSAGE ,null ,pilihan ,null ); if(gender==-1){ JOptionPane.showMessageDialog(null, "Pilih jenis kelamin dulu","Jenis Kelamin!",JOptionPane.ERROR_MESSAGE); inpJK(); } else{ inpAge(); } } public static void inpAge(){ age = JOptionPane.showInputDialog(null, "Umum berapa anda sekarang ?", "Input umur",JOptionPane.QUESTION_MESSAGE); try{ int validAge; validAge=Integer.parseInt(age); if(validAge>50){ JOptionPane.showMessageDialog(null, "Tampaknya anda terlalu tua :D","Umur over!",JOptionPane.ERROR_MESSAGE); inpAge(); } else if(validAge>30){ switch(gender){ case 0 : sapaan="Bapak"; break; case 1 : sapaan="Ibu"; break; } menu_1(); } else{ switch(gender){ case 0 : sapaan="agan"; break; case 1 : sapaan="sist"; break; } menu_1(); } } catch(NumberFormatException ft){ try{ if(age.isEmpty()){ JOptionPane.showMessageDialog(null, "Jangan dikosongi dong,\n kami perlu tahu umur anda!", "Error!", JOptionPane.ERROR_MESSAGE); inpAge(); } else{ JOptionPane.showMessageDialog(null, "Inputkan angka !", "Error!", JOptionPane.ERROR_MESSAGE); inpAge(); } } catch(NullPointerException f){ JOptionPane.showMessageDialog(null, "Jangan dicancel dong,\n kami perlu tahu umur anda!", "Error!", JOptionPane.ERROR_MESSAGE); inpAge(); } } } public static void menu_1() { int konv_bilang; String options[] = {"Konversi Bilangan","Membilang & Pecahan","<<BACK","KELUAR>>"}; konv_bilang = JOptionPane.showOptionDialog(null, "Selamat datang "+sapaan+" "+nama+"!!!\nPilih menu berikut", "Main Menu", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, null); switch(konv_bilang){ case 0 : menu_konversi(); break; case 1 : menu_bilangan(); break; case 2 : inpNama(); break; case 3 : case -1 : konfirm_exit("menu_1"); break; } } public static void konfirm_exit(String menu) { int konfirmasi ; konfirmasi = JOptionPane.showConfirmDialog(null, sapaan+" "+nama+", Anda yakin mau keluar ?","Exit Confirmation", JOptionPane.YES_NO_OPTION); switch(konfirmasi){ case -1: case 0 : System.exit(0); break; case 1 : if("menu_1".equals(menu)){ menu_1(); } else if("menu_konversi".equals(menu)){ menu_konversi(); } else if("menu_bilangan".equals(menu)){ menu_bilangan(); } break; } } public static void menu_konversi() { String option[] = {"BINER","HEXA","OKTAL","<<BACK>>","KELUAR>>"}; int respons = JOptionPane.showOptionDialog(null ,"Konversi dari Desimal ke ?" ,"Pilih Konversi" ,JOptionPane.YES_NO_CANCEL_OPTION ,JOptionPane.QUESTION_MESSAGE ,null ,option ,null ); switch(respons){ case 0 : konv("Biner"); break; case 1 : konv("Heksa"); break; case 2 : konv("Oktal"); break; case 3 : menu_1(); break; case 4 : case -1 : konfirm_exit("menu_konversi"); break; } } private static void tampilkonv(int des, String ke) { hasil= new StringBuilder(); if(ke.equals("Biner")){ Biner(des); } else if(ke.equals("Oktal")){ Oktal(des); } else if(ke.equals("Heksa")){ Heksa(des); } System.out.println("\n\nBilangan desimal : "+des+" "+ke+"nya Adalah: "+hasil); JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+" "+ke+"nya Adalah: "+hasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE); menu_konversi(); } private static void InpBil(String fungsi) { String apa = null; if("Biner".equals(fungsi)||"Heksa".equals(fungsi)||"Oktal".equals(fungsi)){ apa = "dikonversikan ke "+fungsi; } else if("bilang".equals(fungsi)){ apa = "di"+fungsi+"kan/dibaca (maksimal satu milyard)"; } else if("desimal".equals(fungsi)||"rupiah".equals(fungsi)){ apa = "dipecah dalam "+fungsi+" (maksimal satu milyard)"; } String bildes = JOptionPane.showInputDialog(null, "Inputkan bilangan desimal \n untuk "+apa, "Input desimal", JOptionPane.INFORMATION_MESSAGE); try{ validDes=Integer.parseInt(bildes); if(validDes>1000000000){ JOptionPane.showMessageDialog(null, "Nilai terlalu besar, maksimal satu milyard !", "Error!", JOptionPane.ERROR_MESSAGE); InpBil(fungsi); } } catch(NumberFormatException ft){ JOptionPane.showMessageDialog(null, "Inputkan angka !", "Error!", JOptionPane.ERROR_MESSAGE); InpBil(fungsi); } } private static void konv(String konv) { if(konv.equals("Biner")){ InpBil("Biner"); des = validDes; tampilkonv(des,"Biner"); } else if (konv.equals("Heksa")){ InpBil("Heksa"); des = validDes; tampilkonv(des,"Heksa"); } else if (konv.equals("Oktal")){ InpBil("Oktal"); des = validDes; tampilkonv(des,"Oktal"); } } private static void Biner(int n) { String biner = null; if(n>1){ Biner(n/2); } hasil.append(n%2); } private static void Heksa(int n) { char [] daftarHexa={'0','1','2','3','4','5','6','7','8','9','A','B','C', 'D','E','F'}; if (n>1){ Heksa (n/16); } hasil.append(daftarHexa[n%16]); } private static void Oktal(int n) { if(n>1){ Oktal(n/8); } hasil.append(n%8); } private static void menu_bilangan() { String option[] = {"TERBILANG","PECAHAN RUPIAH","PECAHAN DESIMAL","<<BACK>>","KELUAR>>"}; int respons = JOptionPane.showOptionDialog(null ,"Pilih :" ,"Pilih Menu Membilang atau Pecahan" ,JOptionPane.YES_NO_CANCEL_OPTION ,JOptionPane.QUESTION_MESSAGE ,null ,option ,null ); switch(respons){ case 0 : bil_pec("bilang"); break; case 1 : bil_pec("rupiah"); break; case 2 : bil_pec("desimal"); break; case 3 : menu_1(); break; case 4 : case -1 : konfirm_exit("menu_bilangan"); break; } } private static void bil_pec(String bilang) { if(bilang.equals("bilang")){ InpBil("bilang"); des = validDes; tampilbil(des,"bilang"); } else if(bilang.equals("rupiah")){ InpBil("rupiah"); des = validDes; tampilbil(des,"rupiah"); } else if(bilang.equals("desimal")){ InpBil("desimal"); des = validDes; tampilbil(des,"desimal"); } } private static void tampilbil(int des, String bilang) { hasil= new StringBuilder(); String apase = "Bilangan"; String diapakan = " dipecah menjadi"; String petik=" "; String apa="Pecahan"; if(bilang.equals("bilang")){ Bilang(des); diapakan = " dibaca"; petik="'"; apa = "Terbilang"; } else if(bilang.equals("rupiah")){ Pecah_rupiah(des); apase="Uang Rp."; apa+=" rupiah"; } else if(bilang.equals("desimal")){ Pecah_desimal(des); apa+=" desimal"; } System.out.println("\n"+apase+" "+des+diapakan+" : \n\n"+petik+hasil+petik); JOptionPane.showMessageDialog(null,apase+" "+des+diapakan+" : \n"+petik+hasil+petik,"Hasil "+apa,JOptionPane.INFORMATION_MESSAGE); menu_bilangan(); }

Untuk lanjutannya (ma'af tidak dijadikan satu :D)
 public static void Bilang(int des) {
int f = 0;
String angka[] = {""," Se"," Dua "," Tiga "," Empat "," Lima "," Enam "," Tujuh "," Delapan "," Sembilan "};
String angka_2[] = {""," Satu "," Dua "," Tiga "," Empat "," Lima "," Enam "," Tujuh "," Delapan "," Sembilan "};
//String satuan[] = {""," puluh "," belas "," ratus "," ribu "," belas ribu "};
if(des>=1000000000){
hasil.append(angka_2[des/1000000000]);
hasil.append("milyar ");
des%=1000000000;
}
if(des>=100000000){
hasil.append(angka[des/100000000]);
if(des%100000000>1000000){
hasil.append("ratus ");
}
else{
hasil.append("ratus juta ");
}
des%=100000000;
}
if(des>=10000000){
int bantuan=des/1000000;
if(bantuan<20&&bantuan>10){
hasil.append(angka[bantuan%=10]);
hasil.append("belas juta ");
des=(des%10000000)-(bantuan%=10)*1000000;
}
else{
hasil.append(angka[des/10000000]);
if(des%10000000>=1000000){
hasil.append("puluh ");
}
else{
hasil.append("puluh juta ");
}
des%=10000000;
}
}
if(des>=1000000){
hasil.append(angka_2[des/1000000]);
hasil.append("juta ");
des%=1000000;
}
if(des>=100000){
hasil.append(angka[des/100000]);
if(des%100000>1000){
hasil.append("ratus ");
}
else{
hasil.append("ratus ribu ");
}
des%=100000;
}
if(des>=10000){
f++;
int bantuan=des/1000;
if(bantuan<20&&bantuan>10){
hasil.append(angka[bantuan%=10]);
hasil.append("belas ribu ");
des=(des%10000)-(bantuan%=10)*1000;
}
else{
hasil.append(angka[des/10000]);
if(des%10000>=1000){
hasil.append("puluh ");
}
else{
hasil.append("puluh ribu ");
}
des%=10000;
}
}
if(des>=1000){
if(f==1){
hasil.append(angka_2[des/1000]);
}
else{
hasil.append(angka[des/1000]);
}
hasil.append("ribu ");
des%=1000;
}
if(des>=100){
hasil.append(angka[des/100]);
hasil.append("ratus ");
des%=100;
}
if(des>=10){
if(des<20&&des>10){
hasil.append(angka[des%=10]);
hasil.append("belas ");
des=0;
}
else{
hasil.append(angka[des/10]);
hasil.append("puluh ");
des%=10;
}
}
hasil.append(angka_2[des]);
}
public static void Pecah_rupiah(int des) {
int A,B,C,D,E,F,G,H,I,J,K ;

A=des/100000;
des%=100000;

B=des/50000;
des%=50000;

C=des/20000;
des%=20000;

D=des/10000;
des%=10000;

E=des/5000;
des%=5000;

F=des/2000;
des%=2000;

G=des/1000;
des%=1000;

H=des/500;
des%=500;

I=des/100;
des%=100;

J=des/50;
des%=50;

K=des/1;

hasil.append(
"Banyaknya seratus ribuan      = "+A
+"\n Banyaknya lima puluh ribuan = "+B
+"\n Banyaknya dua puluh ribuan  = "+C
+"\n Banyaknya sepuluh ribuan     = "+D
+"\n Banyaknya lima ribuan            = "+E
+"\n Banyaknya dua ribuan             = "+F
+"\n Banyaknya seribuan                = "+G
+"\n Banyaknya lima ratusan         = "+H
+"\n Banyaknya seratusan              = "+I
+"\n Banyaknya lima puluhan         = "+J
+"\n sisa                                              = "+K
+"\n\n *) pecahan menurut pecahan rupiah\n   Digunakan pecahan terbesar dahulu"); 
}
public static void Pecah_desimal(int des) {
int A,B,C,D,E,F,G,H,I,J,K,L,M ;

A=des/1000000000;
des%=1000000000;

B=des/100000000;
des%=100000000;

C=des/10000000;
des%=10000000;

D=des/1000000;
des%=1000000;

E=des/100000;
des%=100000;

F=des/10000;
des%=10000;

G=des/1000;
des%=1000;

H=des/100;
des%=100;

I=des/10;
des%=10;

J=des/1;


hasil.append(
"Nilai milyaran        = "+A
+"\n Nilai ratusan juta  = "+B
+"\n Nilai puluhan juta  = "+C
+"\n Nilai jutaan             = "+D
+"\n Nilai ratusan ribu  = "+E
+"\n Nilai puluhan ribu  = "+F
+"\n Nilai ribuan             = "+G
+"\n Nilai ratusan          = "+H
+"\n Nilai puluhan          = "+I
+"\n Nilai satuan            = "+J

+"\n\n *) pecahan menurut bilangan desimal"); 
}
}



Ma'af untuk masalah penjelasan dan lain-lain, lain waktu aja masih sibuk :D Makasi telah berkunjung


Reaksi:

0 komentar:

Posting Komentar

Share lewat :
Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Bluehost Coupons | Modified by Syarif Moklet