Membuat menu JOption dalam JAVA
Dalam tutorial ini kita akan membuat JOption dan beberapa konversi.
Juga ada program yang akan mengeja bilangan/huruf.
Langsung saja kita berlari ke script bila ada pertanyaan tinggal ditanyakan.
package Praktek1;
import javax.swing.JOptionPane;
public class MenuDariJOption {
//Fields
private static String sc;
private static String _name;
private static String _des;
private static String _gender;
private static int _validDes;
//~Fields
//Constructor
//Class constructor here
//~Constructor
//Methods
public static void hasilPecahan() {
int desimal;
String str = JOptionPane.showInputDialog("Masukkan bilangan yang akan dipecah : ");
try {
if (str.isEmpty()) {
JOptionPane.showMessageDialog(null, "Isikan bilangannya");
hasilPecahan();
} else {
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);
}
menuJOption();
} catch (NullPointerException not) {
JOptionPane.showMessageDialog(null, "Bilangan Wajib Di isi!!");
hasilPecahan();
} catch (NumberFormatException nae) {
JOptionPane.showMessageDialog(null, "Hey '" + str + "'"
+ " .... bukan angka !!"
+ "\nMasukkan angka saja !!");
hasilPecahan();
}
}
String [] angka ={"","satu","dua","tiga","empat","lima","enam","tujuh","delapan","sembilan","sepuluh","sebelas"};
public static void outTerbilang(){
sc = JOptionPane.showInputDialog("Inputkan Bilangan yang kamu ingin ketahui penulisannya *maksimal Quadriliyun* ");
JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
}
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;
}
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;
}
public static String Bilangkan(int number){
String result = "";
String angka = Integer.toString(number);
String[] bilangan = {
"",
"SATU",
"DUA",
"TIGA",
"EMPAT",
"LIMA",
"ENAM",
"TUJUH",
"DELAPAN",
"SEMBILAN",
""
};
int x=0;
int a=0;
int previous=0;
for(int i=0;i<angka.length();i++){
String suffix="";
String prefix="";
int n = Integer.parseInt(Character.toString(angka.charAt(i)));
x = angka.length()-i-1;
switch(x){
case 0:
if(previous == 1&&n!=0){
suffix="BELAS";
if(n==1){
prefix="SE";
n=10;
}
}else{
suffix="";
prefix="";
}
result += " " + prefix + bilangan[n] + suffix;
break;
case 1:
if(n!=1){
prefix="";
suffix="PULUH";
if(previous!=0&&n==0){
suffix="";
}
}else{
int next = Integer.parseInt(Character.toString(angka.charAt(i+1)));
if(next==0){
prefix="SE";
suffix="PULUH";
}
n=10;
}
result += " " + prefix + bilangan[n] + suffix;
break;
case 2:
if(n!=1){
prefix="";
suffix="RATUS";
if(previous!=0&&n==0){
suffix="";
}
}else{
prefix="SE";
suffix="RATUS";
n=10;
}
result += " " + prefix + bilangan[n] + suffix;
break;
case 3:
if(previous == 1&&n!=0){
suffix="BELAS";
if(n==1){
prefix="SE";
n=10;
}
}else{
suffix="";
prefix="";
}
result += " " + prefix + bilangan[n] + suffix;
if(n!=1){
prefix="";
suffix="RIBU";
if(previous!=0&&n==0){
suffix="";
}
}else{
prefix="SE";
suffix="RIBU";
n=10;
}
result += " " + prefix + bilangan[n] + suffix;
break;
}
previous = Integer.parseInt(Character.toString(angka.charAt(i)));
a++;
}
return result;
}
public static String ConvertAP(int number,int base){
String nBase ="";
do{
int mod = number%base;
number/=base;
if(mod < 10){
nBase += mod;
}else{
nBase += (char)(mod-10+'A');
}
}while(number >= 1);
String fBase = "";
for(int i=nBase.length()-1;i>=0;i--){
fBase+=nBase.charAt(i);
}
return fBase;
}
public static void keBiner(int n){
if(n>1){
keBiner(n/2);
}
System.out.print(n%2);
}
public static void inputDesJOption(){
_des = JOptionPane.showInputDialog("Masukkan Bil.Desimal = ");
}
public static void eksepsiInpBiner(){
inputDesJOption();
try{
_validDes = Integer.parseInt(_des);
String decBin = ConvertAP(_validDes, 2);
JOptionPane.showMessageDialog(null, _validDes + " dalam binary adalah " + decBin);
}catch(NumberFormatException ex){
if(_des == null){
JOptionPane.showMessageDialog(null, "Tolong Masukkan angka saja");
}else{
if(_des.isEmpty()){
JOptionPane.showMessageDialog(null, "Inputtan anda kosong");
}else{
JOptionPane.showMessageDialog(null, _des + " bukan angka!\r\nMasukkan angka saja");
}
}
eksepsiInpBiner();
}
}
public static void eksepsiInpOctal(){
inputDesJOption();
try{
_validDes = Integer.parseInt(_des);
String decBin = ConvertAP(_validDes, 8);
JOptionPane.showMessageDialog(null, _validDes + " dalam octal adalah " + decBin);
}catch(NumberFormatException ex){
if(_des == null){
JOptionPane.showMessageDialog(null, "Tolong Masukkan angka saja");
}else{
if(_des.isEmpty()){
JOptionPane.showMessageDialog(null, "Inputtan anda kosong");
}else{
JOptionPane.showMessageDialog(null, _des + " bukan angka!\r\nMasukkan angka saja");
}
}
eksepsiInpOctal();
}
}
public static void eksepsiInpHexadecimal(){
inputDesJOption();
try{
_validDes = Integer.parseInt(_des);
String decBin = ConvertAP(_validDes, 16);
JOptionPane.showMessageDialog(null, _validDes + " dalam hexadecimal adalah " + decBin);
}catch(NumberFormatException ex){
if(_des == null){
JOptionPane.showMessageDialog(null, "Tolong Masukkan angka saja");
}else{
if(_des.isEmpty()){
JOptionPane.showMessageDialog(null, "Inputtan anda kosong");
}else{
JOptionPane.showMessageDialog(null, _des + " bukan angka!\r\nMasukkan angka saja");
}
}
eksepsiInpHexadecimal();
}
}
public static void inpNama(){
_name = JOptionPane.showInputDialog("Masukkan nama Anda : ");
try{
if(_name.isEmpty()){
JOptionPane.showMessageDialog(null, "Nama tidak boleh kosong");
inpNama();
}else{
for(int i=0;i<_name.length();i++){
if(!Character.isLetter(_name.charAt(i))){
JOptionPane.showMessageDialog(null, "Nama hanya bisa mengandung huruf");
inpNama();
break;
}
}
}
}catch(NullPointerException ex){
JOptionPane.showMessageDialog(null, "Harap diisi nama dulu donk");
inpNama();
}
}
public static void inpKelamin(){
String[] jGender = {"LAKI-LAKI","WANITA"};
int response;
response = JOptionPane.showOptionDialog(null, "Pilih jenis kelamin anda:", "jenis kelamin", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, jGender, null);
switch(response){
case 0:
_gender = "L";
break;
case 1:
_gender = "W";
break;
case -1:
_gender = null;
JOptionPane.showMessageDialog(null, "Anda harus menentukan jenis kelamin anda");
inpKelamin();
}
}
public static void menuJOption(){
inpNama();
inpKelamin();
String salutation = !"L".equals(_gender) ? "Mbak" : "Mas";
String[] pilihan = {"Biner","Hexadecimal","Octal","Kembali Ke Nama","Bilangkan","Pecahan","<< Keluar >>"};
while(true){
int response = JOptionPane.showOptionDialog(null, "Selamat datang " +salutation + " " + _name + "\r\nPilih konversi bilangan dibawah ini:", "konversi",JOptionPane.CLOSED_OPTION,JOptionPane.QUESTION_MESSAGE,null, pilihan,null);
switch(response){
case 0:
eksepsiInpBiner();
break;
case 1:
eksepsiInpHexadecimal();
break;
case 2:
eksepsiInpOctal();
break;
case 3:
menuJOption();
break;
case 4:
outTerbilang();
break;
case 5:
hasilPecahan();
case 6:
case-1:
System.exit(0);
break;
default:
JOptionPane.showMessageDialog(null, "Response tidak terduga " + response);break;
}
}
}
public static void main(String[] args){
menuJOption();
//menuJOption();
}
//~Methods
}
1 komentar:
klik gambar untuk memperbesar
Posting Komentar