import javax.swing.JOptionPane;
public class MenuJoption {
private static String nama;
private static String des;
private static String gender;
private static String JenisKelamin;
private static int validDes;
static StringBuilder BinerHasil= new StringBuilder();
static StringBuilder HexaHasil= new StringBuilder();
static StringBuilder OktalHasil= new StringBuilder();
static String cc;
public static void keBiner(int n){
if(n>1){
keBiner(n/2);
}
BinerHasil.append(n%2);
System.out.print(n%2);
}
public static void Hexa(int n){
char[] daftarHexa={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
if(n>0){
Hexa(n/16);
HexaHasil.append(n%16);
System.out.print(daftarHexa[n%16]);
}
}
public static void Oktal(int n){
char[] daftarOktal={'0','1','2','3','4','5','6','7'};
if(n>0){
Oktal(n/8);
OktalHasil.append(n%8);
System.out.print(daftarOktal[n%8]);
}
}
//Untuk Menginput Bilangan Desimal
public static void inputDesJOption(){
des = JOptionPane.showInputDialog("Masukkan "
+ "Bil.Desimalnya = ");
}
public static void eksepsiInpBiner(){
inputDesJOption();
try{
if(des.isEmpty()){
JOptionPane.showMessageDialog(null,
"Jangan dikosongi!");
eksepsiInpBiner();}
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+
", Binernya adalah = ");
keBiner(validDes);
System.out.println();
///Untuk Menampilkan konversi di showMessageDialog JOptionPane
validDes = Integer.parseInt(des);
JOptionPane.showMessageDialog(null, "Bilangan Desimal : " + des + " Hexanya adalah :"
+ BinerHasil, "HasilKonversi", JOptionPane.PLAIN_MESSAGE);
BinerHasil = new StringBuilder();
//Untuk mensetting supaya cuma bisa dimasuki angka saja
}catch(NumberFormatException bbb){
JOptionPane.showMessageDialog(null, des
+" bukan angka!! "
+"\nMasukkan Angka !!!!!");
eksepsiInpBiner();
//Untuk mensetting supaya mengisi /tidak dikosongi
}catch(NullPointerException jkl){
JOptionPane.showMessageDialog(null, "Isi terlebih dahulu!");
eksepsiInpBiner();
}
}
public static void eksepsiInpHexa(){
inputDesJOption();
try{
if(des.isEmpty()){
JOptionPane.showMessageDialog(null,
"Jangan dikosongi !!!!!");
eksepsiInpHexa();//kembali input bilangan
}
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+
", Hexanya adalah = ");
Hexa(validDes);
System.out.println();
///Untuk Menampilkan konversi di showMessageDialog JOptionPane
validDes = Integer.parseInt(des);
JOptionPane.showMessageDialog(null, "Bilangan Desimal : " + des + " Hexanya adalah :"
+ HexaHasil, "HasilKonversi", JOptionPane.PLAIN_MESSAGE);
HexaHasil = new StringBuilder();
//Untuk mensetting supaya cuma bisa dimasuki angka saja
}catch(NumberFormatException rrr){
JOptionPane.showMessageDialog(null, des
+" bukan angka!! "
+ "\nMasukkan angka saja!!");
eksepsiInpHexa();
//Untuk mensetting supaya mengisi /tidak dikosongi
}catch(NullPointerException jkl){
JOptionPane.showMessageDialog(null, "Isi terlebih dahulu!");
eksepsiInpHexa();
}
}
public static void eksepsiInpOktal(){
inputDesJOption();
try{
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+
", Oktalnya adalah = ");
Oktal(validDes);
System.out.println();
///Untuk Menampilkan konversi di showMessageDialog JOptionPane
validDes = Integer.parseInt(des);
JOptionPane.showMessageDialog(null, "Bilangan Desimal : " + des + " Oktalnya adalah :"
+ OktalHasil, "HasilKonversi", JOptionPane.PLAIN_MESSAGE);
OktalHasil = new StringBuilder();
//Untuk mensetting supaya cuma bisa dimasuki angka saja
}catch(NumberFormatException rrr){
JOptionPane.showMessageDialog(null, des
+" bukan angka!! "
+ "\nMasukkan angka saja!!");
eksepsiInpOktal();
//Untuk mensetting supaya mengisi /tidak dikosongi
}catch(NullPointerException asd){
JOptionPane.showMessageDialog(null, "Isi terlebih dahulu!");
eksepsiInpOktal();
}
}
public static void outHasilBiner(){
eksepsiInpBiner();
}
public static void outHasilHexa(){
eksepsiInpHexa();
}
public static void outHasilOktal(){
eksepsiInpOktal();
}
//Coding Untuk Memasukkan Nama
public static void inpNama(){
nama=JOptionPane.showInputDialog("Masukkan "
+ "Nama Anda :");
try{
if(nama.isEmpty()){
JOptionPane.showMessageDialog(null,
"Nama tidak boleh kosong!!");
inpNama();//kembali input nama
}
}
catch(NullPointerException ttt){
JOptionPane.showMessageDialog(null,
"Harap Nama diisi dulu!!");
inpNama();//kembali input nama
}
}
//Coding Untuk Jenis Kelamin
public static void JenisKelamin(){
gender=JOptionPane.showInputDialog("Pilih Jenis Kelamin Anda !!"
+"\nL/P");
try{
if(gender.isEmpty()){
JOptionPane.showMessageDialog(null,
"Harap Diisi Jenis Kelamin Anda!!");
JenisKelamin();
}
}
catch(NullPointerException qqq){
JOptionPane.showMessageDialog(null,
"Harap masukkan jenis kelamin anda!!!");
JenisKelamin();
}
if("L".equals(gender)){
JenisKelamin="Mas ";
}
else{
if
("P".equals(gender)){
JenisKelamin="Mbak ";
}
else{
JOptionPane.showMessageDialog(null,
"Jenis Kelamin Hanya bisa diisi L/P!!"
+"\nTidak boleh yang lain!!");
JenisKelamin();
}
}
}
//Untuk menu kembali
public static void Kembali(){
inpNama();
JenisKelamin();
}
public static void menuJOption(){
//... Text untuk tombol.
inpNama();
JenisKelamin();
String[] pilihan = {"BINER", "HEXA", "OKTAL","Pecahan","Terbilang","Kembali",
"<< KELUAR >>"};
//... "Infinite" loop, selesai jika System.exit(0)
while (true) {
int response = JOptionPane.showOptionDialog (
null //Tengah window.
, "Selamat Datang "+JenisKelamin+" "+nama+" :) "
+ "\nPilih Konversi Bilangan dibawah 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 yang ditekan
switch (response){
case 0:
outHasilBiner();
break;
case 1:
outHasilHexa();
;
break;
case 2:
outHasilOktal();
;
break;
case 3:
Pecahan();
break;
case 4:
outTerbilang();
break;
case 5:
Kembali();
break;
case 6:
case -1:
//... antara tombol (3) dan clos box (-1) ditangani disini.
System.exit(0); //keluar looping
default:
//... Jika kita disini ada kesalahan,
JOptionPane.showMessageDialog(null,
"response salah "+ response);break;
}
}
}
//Coding Untuk 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","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() {
cc = JOptionPane.showInputDialog("Masukan Bilangan yang akan dibilang : ");
try {
if (cc.isEmpty()) {
JOptionPane.showMessageDialog(null, "Jangan dikosongi !!!");
outTerbilang();
} else {
JOptionPane.showMessageDialog(null, new MenuJoption().terbilang(new Long(cc)), "Terbilang", JOptionPane.INFORMATION_MESSAGE);
}
} catch (NullPointerException qqq) {
JOptionPane.showMessageDialog(null, "Harap diisi dulu !!");
outTerbilang();
} catch (NumberFormatException uuu) {
JOptionPane.showMessageDialog(null, cc
+ " .... bukan angka !!"
+ "\nMasukkan angka saja !!");
outTerbilang();
}
}
//Coding Untuk Pecahan
public static void Pecahan (){
int desimal;
String str=JOptionPane.showInputDialog("Masukkan bilangan 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 main(String[] args){
menuJOption();
}
}
1. Ini adalah tampilan jika coding berhasil
3.Sekarang kita masukkan nama
5.Bila dikosongi ataupun kita klik cancel akan tampil seperti berikut
10.Akan tampil notif ini
12.Inilah hasilnya
13.Klik "OK" kemudian pilih HEXA,,masukkan angka seprti langkah ke 11
14.Dan ini adalah hasil dari OKTAL
15.Klik "OK" lalu coba kita pilih menu "pecahan"
16.Inilah hasilnya
17.Klik "OK" lalu kita coba pilih menu "terbilang" dan akan tampil seperti ini
18.Dan ini hasil pembilangannya
19.Klik "OK" bila kita pilih menu kembali pada tampilan no.7 akan tampil lagi sbb
Bila kita pilih menu keluar pada tampilan no.7 akan langsung close jendela tsb..
ya sekian dulu post dari saya,ada kurang lebihnya saya mohon maaf,,klu ada scrip yg salah mohon dicomen ya..