koding ini juga menampilkan hasil perhitungan pada console
package praktikumjava;
import javax.swing.JOptionPane;
public class MenuDariJOption {
private static String name;
private static String des;
private static int validDes;
private static String gender;
private static String kelamin;
static StringBuilder hasilBiner= new StringBuilder();
static StringBuilder hasilHexa= new StringBuilder();
static StringBuilder hasilOctal= new StringBuilder();
static String sc;
public static void keBiner(int n){
if(n>1){
keBiner(n/2);
}
System.out.print(n%2);
hasilBiner.append(n%2);
}
public static void inputDesJOption(){
des=JOptionPane.showInputDialog("Bilangan Desimal yang ingin dikonversikan : ");
try{
if(des.isEmpty()){
JOptionPane.showMessageDialog(null, "Isi dulu bilangan desimalnya :D");
inputDesJOption();
}
}
catch(NullPointerException npa){
JOptionPane.showMessageDialog(null, "Isi dulu ya :D");
inputDesJOption();
}
}
public static void eksepsiInpBiner(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal "+des+",Dalam biner = ");
keBiner(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Desimal : "+des+" Dalam Biner : "+hasilBiner, "KONVERSI", JOptionPane.PLAIN_MESSAGE);
hasilBiner = new StringBuilder (); //kalau pakai yang new
//hasilBiner.delete(0, 10); kalau pakai yang delete
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null, "'"+des+"'"
+ " Sorry ... Bukan angka lo"
+ "\nInputkan angka saja ya ;D");
outHasilBiner();
}
}
public static void outHasilBiner() {
eksepsiInpBiner();
}
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]);
hasilHexa.append(daftarHexa[n%16]);
}
public static void eksepsiInpHexa(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal "+des+",Dalam hexa = ");
keHexa(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Desimal : "+des+" Dalam Hexa = "+hasilHexa, "KONVERSI", JOptionPane.PLAIN_MESSAGE);
hasilHexa = new StringBuilder (); //kalau pakai yang new
//hasilHexa.delete(0, 10); kalau pakai yang delete
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null, "'"+des+"'"
+ " Sorry .... Bukan angka lo"
+ "\nInputkan angka saja ya ;D");
outHasilHexa();
}
}
public static void outHasilHexa() {
eksepsiInpHexa();
}
public static void keOctal(int n){
if(n>1){
keOctal(n/8);
}
System.out.print(n%8);
hasilOctal.append(n%8);
}
public static void eksepsiInpOctal(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal "+des+",Dalam Octal = ");
keOctal(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Desimal = "+des+" Dalam Octal = "+hasilOctal, "KONVERSI", JOptionPane.PLAIN_MESSAGE);
hasilOctal = new StringBuilder (); //kalau pakai yang new
//hasilOctal.delete(0, 10); kalau pakai yang delete
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null, "'"+des+"'"
+ " Sorry .... Bukan angka lo"
+ "\nInputkan angka saja ya ;D");
outHasilOctal();
}
}
public static void outHasilOctal() {
eksepsiInpOctal();
}
public static void inpNama(){
name=JOptionPane.showInputDialog("Watashi wa (NamaSaya) *tolong gunakan jangan spasi* ");
try {
if(name.isEmpty()){
JOptionPane.showMessageDialog(null, "perkalkan nama kamu dulu ");
inpNama();//kembali input nama
}
else{
for(int i=0; i< name.length();i++){
if(!Character.isLetter(name.charAt(i))) {
JOptionPane.showMessageDialog(null, "Hanya Boleh diisi huruf !!");
inpNama();//kembali input nama
}
}
}
}catch (NullPointerException npe){
JOptionPane.showMessageDialog(null, "Isi dulu ya form namanya");
inpNama();//kembali input nama
}
}
//untuk menampilkan input dialog jenis Kelamin (gender)
public static void jenisKelamin() {
String[] choices = {"Laki-Laki", "Perempuan"};
int gnder = JOptionPane.showOptionDialog(
null, "Jenis Kelamin ?" // Pesan
, "Gender" // Judul di Tittlebar
, JOptionPane.YES_NO_OPTION // Tipe Option
, JOptionPane.PLAIN_MESSAGE // Tipe Pesan
, null, choices, null);
switch (gnder) {
case 0:
gender = "oniisan ";
break;
case 1:
gender = "onesan ";
break;
default:
JOptionPane.showMessageDialog(null,
"Mohon Pilih Jenis Kelamin Anda");
jenisKelamin ();
break;
}
}
//menampilkan 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 "};
if(x > Math.pow(10, 20)) return "Melebihi kapasitas";
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("Inputkan Bilangan "
+ " *maksimal Quadriliyun* ");
try{
if(sc.isEmpty()){
JOptionPane.showMessageDialog(null, "Harap Isi Terlebih Dahulu Angkanya!!");
outTerbilang();
}else{
JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
}
}catch(NullPointerException not){
JOptionPane.showMessageDialog(null, "Masukan Dulu Bilangannya !! ");
outTerbilang();
}catch (NumberFormatException nae) {
JOptionPane.showMessageDialog(null, "Hey '" + sc + "'"
+ " .... bukan angka !!"
+ "\nMasukkan angka saja !!");
outTerbilang();
}
}
//Untuk Pecahan
public static void bilPecahan(){
int dec;
String str=JOptionPane.showInputDialog("Masukkan bilangan yang ingin dipecah ");
try {
if (str.isEmpty()) {
JOptionPane.showMessageDialog(null, "Isi dulu ya.. !!");
bilPecahan();
} else {
dec=Integer.parseInt(str);
int satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan, sepuluh, sebelas, duabelas, tigabelas;
satu=dec/100000;
dec%=100000;
dua=dec/50000;
dec%=50000;
tiga=dec/10000;
dec%=10000;
empat=dec/5000;
dec%=5000;
lima=dec/1000;
dec%=1000;
enam=dec/500;
dec%=500;
tujuh=dec/100;
dec%=100;
delapan=dec/50;
dec%=50;
sembilan=dec/1;
dec%=1;
JOptionPane.showMessageDialog(null,"Banyaknya seratus ribuan = "+satu
+"\nBanyaknya lima puluh ribuan = "+dua
+"\nBanyaknya sepuluh ribuan = "+tiga
+"\nBanyaknya lima ribuan = "+empat
+"\nBanyaknya seribuan = "+lima
+"\nBanyaknya lima ratusan = "+enam
+"\nBanyaknya seratusan = "+tujuh
+"\nBanyaknya lima puluhan = "+delapan
+"\nBanyaknya satuan = "+sembilan
, "PECAHAN", JOptionPane.INFORMATION_MESSAGE);
}
} catch (NullPointerException not) {
JOptionPane.showMessageDialog(null, "Ayoo diisi duluu.. !!");
bilPecahan();
} catch (NumberFormatException nae) {
JOptionPane.showMessageDialog(null, "Halooo '" + str + "'"
+ " .... bukan angka !!"
+ "\nMasukkan angka saja !!");
bilPecahan();
}}
//inputkembali
public static void menuKembali(){
inpNama();
jenisKelamin();
}
public static void menuJOption(){
//....text untuk tombol.
inpNama();
jenisKelamin();
String[] pilihan={"BINER","HEXA","OCTAL","TERBILANG", "PECAHAN", "KEMBALI","KELUAR"};
//...."Infinite" loop ,selesai jika system.exit(0)
while (true){
int response = JOptionPane.showOptionDialog(null//Tengah Window.
,"O-kaeri nasai " +gender +name+"!!"+"\nPilih Proses Konversi Bilangan dibawah ini"//pesan
,"Proses Konversi Bilangan"
,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 di tekan.
switch( response){
case 0:
outHasilBiner();
break;
case 1:
outHasilHexa();
break;
case 2:
outHasilOctal();
break;
case 3:
outTerbilang();
break;
case 4:
bilPecahan();
break;
case 5:
menuKembali();
break;
case 6:
case -1:
//...antara tombol (3) dan close box (-1) ditangani disini.
JOptionPane.showMessageDialog(null, "Terimakasih "
+ gender + name
+ " Telah Mencoba Program Konversi Bilangan Ini"
+ ", Sampai Jumpa :D");
System.exit(0);
default:
//... Jika ktia disini ada kesalahan,
JOptionPane.showMessageDialog(null,
"response salah " + response);
break;
}
}
}
public static void main(String[]args){
menuJOption();
}
}
jika koding benar maka akan tampil seperti :
setelah meng-inpukan nama :
setelah berhasil memilih gender :
jika memilih hexa :
jika hexa diisi dengan huruf, maka tampil :
jika di OK dalam keadaan kosong :
jika di klik tanda merah X :
jika memilih pecahan :
dan hasil nya :jika di cancel :
jika memilih terbilang :
hasil terbilang :
jika memilih Keluar :
Tidak ada komentar:
Posting Komentar