/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Praktek1;
/**
*
* @author Toshiba
*/
import javax.swing.JOptionPane;
public class PRJavaKonversiBil {
private static String name;
private static String des;
private static String kelamin;
private static String gender;
private static int validDes;
static StringBuilder binerResult = new StringBuilder();
static StringBuilder hexaResult = new StringBuilder();
static StringBuilder oktalResult = new StringBuilder();
static String sc;
public static void keBiner (int n){
if (n>1){
keBiner(n/2);
}
System.out.print(n%2);
binerResult.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]);
hexaResult.append(daftarHexa[n%16]);
}
public static void keOktal (int n){
char [] daftarOktal={'1','2','3','4','5','6','7'};
if (n>1){
keOktal(n/8);
}
System.out.print((daftarOktal[n%8]));
oktalResult.append(daftarOktal[n%8]);
}
public static void inputDesJOption(){
des = JOptionPane.showInputDialog("Masukkan Bil.desimal =");
try{
if(des.isEmpty()){
JOptionPane.showMessageDialog(null, "anda harus mengisikan"
+ "bilangan decimal terlebih dahulu");
inputDesJOption();
}
}
catch(NullPointerException npa){
JOptionPane.showMessageDialog(null, "maaf, mohon isi bilangan desimal");
inputDesJOption();
}
}
public static void outHasilBiner(){
inputDesJOption();
try{
validDes=Integer.parseInt(des);
System.out.print("\n Bilangan Desimal "+des+" dalam Biner adalah: ");
keBiner(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal "+des+" "
+ "dalam Biner adalah : "
+""+binerResult, "Kotak Hasil", JOptionPane.PLAIN_MESSAGE);
}
catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null, "'"+des+"'"
+"bukan angka !"
+ "\nMohon isikan angka saja");
outHasilBiner();
}
}
public static void outHasilHexa(){
inputDesJOption();
try{ //untuk melakukan penanganan kesalahan
validDes = Integer.parseInt(des);
System.out.print("\nBilangan Decimal "+des+" dalam Hexa adalah :");
keHexa(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan Desimal "+des+" dalam Hexa adalah :"
+ hexaResult, "Kotak Hasil", JOptionPane.PLAIN_MESSAGE);
}
catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null, "'"+des+"'"
+ " bukan angka !"
+ "\nmohon isikan angka saja");
outHasilHexa();
}
}
public static void outHasilOktal(){
inputDesJOption();
try{
validDes=Integer.parseInt(des);
System.out.print("\nBilangan Desimal "+des+" dalam Oktal adalah: ");
keOktal(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan "+des+" Desimal "
+ "dalam Octal adalah : "
+ ""+oktalResult, "Kotak Hasil", JOptionPane.PLAIN_MESSAGE);
}
catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null, "'"+des+"'"
+ " bukan angka"
+ "\nMohon isikan angka saja");
outHasilOktal();
}
}
public static void kembaliMenu(){
inpNama();
jenisKelamin();
}
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 ya!!");
inpNama();//kembali input nama
}
}
public static void jenisKelamin(){
gender=JOptionPane.showInputDialog("Pilih Jenis Kelamin Anda"
+ " (Laki-laki/Perempuan): ");
try{
if(gender.isEmpty()){
JOptionPane.showMessageDialog(null, "Mohon diisi dulu "
+ "(Laki-laki/Perempuan");
jenisKelamin();
}
}
catch(NullPointerException npt){
JOptionPane.showMessageDialog(null, "Harap diisi ya !! ");
jenisKelamin();
}
if ("Laki-laki".equals(gender)) {
kelamin="Mas. ";
}
else{
if("Perempuan".equals(gender)){
kelamin="Mbak. ";
}
else{
JOptionPane.showMessageDialog(null, "Mohon isikan "
+ "(Laki-laki/Perempuan). JANGAN YANG LAIN");
jenisKelamin();
}
}
}
String[] number={"","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 = number[y]+" ratus ";
if(y == 1)bilang=" seratus ";
x%=100;
}
if(x<12)bilang += number[x];
else{
y=x/10;
x%=10;
if(y==1)
bilang +=number[x] + " belas ";
else
bilang += number[y]+ " puluh "+ number[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 MenuDariJOption().terbilang(new
Long(sc)), "Terbilang", JOptionPane.INFORMATION_MESSAGE);
}
public static void outPecahan(){
int desimal;
String str=JOptionPane.showInputDialog("Masukkan bilangan Anda 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);
}
public static void menuJOption(){
//... Text untuk tombol.
inpNama();
jenisKelamin();
String[] pilihan = {"BINER", "HEXA", "OKTAL","TERBILANG",
"PECAHAN","BACK","<< EXIT >> "};
// ..."infinite" loop, selesai jika System.exit(0)
while (true){
int response = JOptionPane.showOptionDialog(
null // Tengah Window.
, "Welcome "+kelamin+name+"!!"
+ "\nPilih Konversi Bilangan yang anda inginkan?"//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();
break;
case 1:
outHasilHexa();
break;
case 2:
outHasilOktal();
break;
case 3:
outTerbilang();
break;
case 4:
outPecahan();
break;
case 5:
kembaliMenu();
break;
case 6:
case -1:
//...antara tombol (3) dan close box(-1) ditangani diisi.
System.exit(0); // keluar looping, tapi
default:
//... jika kita disini ada kesalahan,
JOptionPane.showMessageDialog(null, "Response tak terduga"
+ response);break;
}
}
}
public static void main(String [] args){
menuJOption();
}
}
Dan tekan shift + f6 untuk melihat hasilnya
Pertama : masukkan Nama setelah itu tekan OK !!
0 komentar:
Posting Komentar