Sore kawan ... aku mau berbagi informasi dan script/coding untuk pengguna'an atau pembuatan menu konversi pada jav.. lebih tepatnya menggunakan 'JOption' ..
Bimbingan: Mr. Hadi W.
Perhatika Codingnya :
/*...*/
package Praktek1;
/**
*
* @author dina
*/
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 keOctal (int n) {
if(n>1){
keOctal(n/8);
}
System.out.print(n%8);
hasilOctal.append(n%8);
}
public static void keHexa(int n){ // konversi des ke hexa
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 inputDesJOption () {
des=JOptionPane.showInputDialog("Masukkan Bilangan Desimal=");
}
public static void eksepsiInpBiner(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+",Binernya adalah = ");
keBiner(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+" Binernya Adalah: "+hasilBiner, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null, "'"+des+"'"
+ " .... Bukan angka !!"
+ "\nMasukkan angka saja !!");
outHasilBiner();
}
}
public static void outHasilBiner () {
eksepsiInpBiner();
}
public static void eksepsiInpOctal(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+",Octalnya adalah = ");
keOctal(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+" octalnya Adalah: "+hasilOctal, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null, "'"+des+"'"
+ " .... Bukan angka !!"
+ "\nMasukkan angka saja !!");
outHasilOctal();
}
}
public static void outHasilOctal () {
eksepsiInpOctal();
}
public static void eksepsiInpHexa(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+",Hexanya adalah = ");
keHexa(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+" Hexanya Adalah: "+ hasilHexa, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null, "'"+des+"'"
+ " .... Bukan angka !!"
+ "\nMasukkan angka saja !!");
outHasilHexa();
}
}
public static void outHasilHexa () {
eksepsiInpHexa();
}
public static void inpNama () {
name=JOptionPane.showInputDialog("Masukkan Nama Anda:");
try{
if(name.isEmpty()){
JOptionPane.showMessageDialog(null,"Eitss,,Nama Tidak boleh kosong!");
inpNama();//kembali input nama
}
}catch(NullPointerException npe){
JOptionPane.showMessageDialog(null,"Harap diisi nama dulu donk !");
inpNama();//kembali input nama
}
}
public static void jenisKelamin(){
gender=JOptionPane.showInputDialog("Masukkan Jenis Kelamin Anda (Laki-Laki/Perempuan) "
+"Besar dan kecilnya huruf berpengaruh :");
try{
if(gender.isEmpty()){
JOptionPane.showMessageDialog(null, " Loe Cowok atau Cewek ? ");
jenisKelamin();
}
}
catch(NullPointerException npt){
JOptionPane.showMessageDialog(null, "Jenis Kelamin harus diisi, jangan dilewati");
jenisKelamin();
}
if ("Laki-Laki".equals(gender)) {
kelamin="Abang, ";
}
else{
if("Perempuan".equals(gender)){
kelamin="Kak, ";
}
else{
JOptionPane.showMessageDialog(null, "Hanya bisa diisi Laki-Laki dan Perempuan saja");
jenisKelamin();
}
}
}
//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 "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("Masukkan Bilangan : ");
JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
}
//Untuk Pecahan
public static void bilPecahan(){
int dec;
String str=JOptionPane.showInputDialog("Masukkan bilangan yang ingin dipecah : ");
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);
}
public static void menuJOption () {
//text untuk tombol
inpNama();
jenisKelamin();
String[] pilihan={"Biner","Hexa","Oktal","Kembali","Terbilang","Pecahan","<<Keluar>>"};
//"infinite" loop,selesai jika System.exit(0)
while(true){
int response=JOptionPane.showOptionDialog(null,//tengahwindow
"Welcome " +kelamin +name+"!!"
+"\nPilih Konversi Bilangan dibawah ini?"
,"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 ditekan.
switch (response){
case 0:
outHasilBiner();
break;
case 1:
outHasilHexa();
break;
case 2:
outHasilOctal();
break;
case 3:
inpNama();
break;
case 4:
outTerbilang();
break;
case 5:
bilPecahan();
break;
case 6:
case -1:
//antara tombol (3) dan close box(-1) ditangani disini
System.exit(0);
default:
//jika kita ada kesalahan
JOptionPane.showMessageDialog(null, "response tak terduga"
+ response);break;
}
}
}
public static void main(String[] args){
menuJOption();
}
}
berikut hasil menunya :
>> input nama : apabila nama kosong, akan ada pesan :
Setelah nama di isi
>> Masukkan Gender
>>Apabila gender kosong :
>>Lalu inputkan angka:
>>JIka Bilangan yg di inputkan kosong :
>> Jika ingin menampilkan nilai dengan bilangan, pilih menu terbilang, dan hasilnya :
>>Jika ingin menu pecahan, maka tinggal pilih PECAHAN :
Bimbingan: Mr. Hadi W.
Perhatika Codingnya :
/*...*/
package Praktek1;
/**
*
* @author dina
*/
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 keOctal (int n) {
if(n>1){
keOctal(n/8);
}
System.out.print(n%8);
hasilOctal.append(n%8);
}
public static void keHexa(int n){ // konversi des ke hexa
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 inputDesJOption () {
des=JOptionPane.showInputDialog("Masukkan Bilangan Desimal=");
}
public static void eksepsiInpBiner(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+",Binernya adalah = ");
keBiner(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+" Binernya Adalah: "+hasilBiner, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null, "'"+des+"'"
+ " .... Bukan angka !!"
+ "\nMasukkan angka saja !!");
outHasilBiner();
}
}
public static void outHasilBiner () {
eksepsiInpBiner();
}
public static void eksepsiInpOctal(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+",Octalnya adalah = ");
keOctal(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+" octalnya Adalah: "+hasilOctal, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null, "'"+des+"'"
+ " .... Bukan angka !!"
+ "\nMasukkan angka saja !!");
outHasilOctal();
}
}
public static void outHasilOctal () {
eksepsiInpOctal();
}
public static void eksepsiInpHexa(){
inputDesJOption();
try {
validDes=Integer.parseInt(des);
System.out.print("\nDesimal dari "+des+",Hexanya adalah = ");
keHexa(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+" Hexanya Adalah: "+ hasilHexa, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(null, "'"+des+"'"
+ " .... Bukan angka !!"
+ "\nMasukkan angka saja !!");
outHasilHexa();
}
}
public static void outHasilHexa () {
eksepsiInpHexa();
}
public static void inpNama () {
name=JOptionPane.showInputDialog("Masukkan Nama Anda:");
try{
if(name.isEmpty()){
JOptionPane.showMessageDialog(null,"Eitss,,Nama Tidak boleh kosong!");
inpNama();//kembali input nama
}
}catch(NullPointerException npe){
JOptionPane.showMessageDialog(null,"Harap diisi nama dulu donk !");
inpNama();//kembali input nama
}
}
public static void jenisKelamin(){
gender=JOptionPane.showInputDialog("Masukkan Jenis Kelamin Anda (Laki-Laki/Perempuan) "
+"Besar dan kecilnya huruf berpengaruh :");
try{
if(gender.isEmpty()){
JOptionPane.showMessageDialog(null, " Loe Cowok atau Cewek ? ");
jenisKelamin();
}
}
catch(NullPointerException npt){
JOptionPane.showMessageDialog(null, "Jenis Kelamin harus diisi, jangan dilewati");
jenisKelamin();
}
if ("Laki-Laki".equals(gender)) {
kelamin="Abang, ";
}
else{
if("Perempuan".equals(gender)){
kelamin="Kak, ";
}
else{
JOptionPane.showMessageDialog(null, "Hanya bisa diisi Laki-Laki dan Perempuan saja");
jenisKelamin();
}
}
}
//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 "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("Masukkan Bilangan : ");
JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
}
//Untuk Pecahan
public static void bilPecahan(){
int dec;
String str=JOptionPane.showInputDialog("Masukkan bilangan yang ingin dipecah : ");
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);
}
public static void menuJOption () {
//text untuk tombol
inpNama();
jenisKelamin();
String[] pilihan={"Biner","Hexa","Oktal","Kembali","Terbilang","Pecahan","<<Keluar>>"};
//"infinite" loop,selesai jika System.exit(0)
while(true){
int response=JOptionPane.showOptionDialog(null,//tengahwindow
"Welcome " +kelamin +name+"!!"
+"\nPilih Konversi Bilangan dibawah ini?"
,"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 ditekan.
switch (response){
case 0:
outHasilBiner();
break;
case 1:
outHasilHexa();
break;
case 2:
outHasilOctal();
break;
case 3:
inpNama();
break;
case 4:
outTerbilang();
break;
case 5:
bilPecahan();
break;
case 6:
case -1:
//antara tombol (3) dan close box(-1) ditangani disini
System.exit(0);
default:
//jika kita ada kesalahan
JOptionPane.showMessageDialog(null, "response tak terduga"
+ response);break;
}
}
}
public static void main(String[] args){
menuJOption();
}
}
berikut hasil menunya :
>> input nama : apabila nama kosong, akan ada pesan :
>> Masukkan Gender
>>Apabila gender kosong :
>>Pilih menu yang di inginkan, miaslnya Hexa :
>>JIka Bilangan yg di inputkan kosong :
>> Jika ingin menampilkan nilai dengan bilangan, pilih menu terbilang, dan hasilnya :
>>Jika ingin menu pecahan, maka tinggal pilih PECAHAN :
Comments
Post a Comment