Haloo semuanya...
Kali ini vicky akan mengajari bagaimana sih membuat menu
Java menggunakan JoptionPane
Menu ini akan berisi konversi bilangan desimal-biner desimal-hexa desimal-oktal lalu juga ada terbilang dengan menyebutkan angka dan pecahan untuk memaparkan suatu bilangan.
setelah itu kita akan membuat pilihan untuk kembali ke awal serta pilihan keluar(exit)
Menu ini akan berisi konversi bilangan desimal-biner desimal-hexa desimal-oktal lalu juga ada terbilang dengan menyebutkan angka dan pecahan untuk memaparkan suatu bilangan.
setelah itu kita akan membuat pilihan untuk kembali ke awal serta pilihan keluar(exit)
Ayo kita liat coding nya
public class MenuDariJOption {
private static String name;
private static String des;
private static int validDes;
private static String jeniskelamin;
private static String panggilan;
private static String bil;
static StringBuilder binerHasil= new StringBuilder();
static StringBuilder hexaHasil= new StringBuilder();
static StringBuilder oktalHasil= new StringBuilder();
Setelah itu masukkan script untuk konversi bilangan :
public static void keBiner(int n){
if(n>1){
keBiner(n/2);
}
binerHasil.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'};
int sisaBagi = n % 16;
if (n > 0) {
keHexa((n - sisaBagi) / 16);
hexaHasil.append(daftarHexa[n % 16]);
}
}
public static void keOktal(int n){
int sisaBagi = n % 8;
if (n > 0) {
keOktal((n - sisaBagi)/8);
oktalHasil.append(n % 8);
}
}
Lalu masukkan script untuk inputan angkanya :
public static void inputDesJOption(){
des=JOptionPane.showInputDialog("Masukkan Bil. Desimalnya = ");
try{
if(des.isEmpty()){
JOptionPane.showMessageDialog(null, "Isi dengan angka dulu!!");
inputDesJOption();//kembali input angka
}
}catch(NullPointerException npa){
JOptionPane.showMessageDialog(null, "Isi dulu dong!!");
inputDesJOption();
}
}
Masukkan juga script untuk mengeluarkan hasil konversinya, di sini hasil konversi akan ditampilkan pada sebuah message dialog. :
public static void outHasilBiner() {Lalu masukkan script untuk menginputkan nama dan jenis kelamin :
inputDesJOption();
try {
validDes = Integer.parseInt(des);
keBiner(validDes);
JOptionPane.showMessageDialog(null, "Desimal : " + des + " binernya adalah : " + binerHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
binerHasil = new StringBuilder();
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "'" + des + "'"
+ " bukan angka !!"
+ "\nMasukkan angka saja !!");
outHasilBiner();
}
}
public static void outHasilHexa() {
inputDesJOption();
try {
validDes = Integer.parseInt(des);
keHexa(validDes);
JOptionPane.showMessageDialog(null, "Desimal : " + des + " hexanya adalah : " + hexaHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
hexaHasil = new StringBuilder();
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "'" + des + "'"
+ " bukan angka !!"
+ "\nMasukkan angka saja !!");
outHasilHexa();
}
}
public static void outHasilOktal() {
inputDesJOption();
try {
validDes = Integer.parseInt(des);
keOktal(validDes);
JOptionPane.showMessageDialog(null, "Desimal : " + des + " oktalnya adalah : " + oktalHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
oktalHasil = new StringBuilder();
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "'" + des + "'"
+ " bukan angka !!"
+ "\nMasukkan angka saja !!");
outHasilOktal();
}
}
public static void inpNama(){Seperti saya jelaskan di atas, ada option untuk terbilang dan pecahan. Berikut script-nya :
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, "Diisi nama dulu dong!!");
inpNama();//kembali input nama
}
}
public static void jeniskelamin(){
jeniskelamin=JOptionPane.showInputDialog(
"Masukan Jenis Kelamin (cowok/cewek)");
try{
if(jeniskelamin.isEmpty()){
JOptionPane.showMessageDialog(null, "Harus diisi lho!!");
jeniskelamin();
}
}
catch(NullPointerException npt){
JOptionPane.showMessageDialog(null, "Isi dulu dong!!");
jeniskelamin();
}
if ("cowok".equals(jeniskelamin)) {
panggilan="Agan, ";
}
else{
if("cewek".equals(jeniskelamin)){
panggilan="Aganwati, ";
}
else{
JOptionPane.showMessageDialog(null, "Hanya bisa diisi cowok dan cewek!!");
jeniskelamin();
}
}
}
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() {
bil = JOptionPane.showInputDialog("Masukan Bilangan yang akan disebut : ");
try {
if (bil.isEmpty()) {
JOptionPane.showMessageDialog(null, "Isi dulu dengan bilangan !!");
outTerbilang();
} else {
JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(bil)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
}
} catch (NullPointerException not) {
JOptionPane.showMessageDialog(null, "Harus diisi dulu !!");
outTerbilang();
} catch (NumberFormatException nae) {
JOptionPane.showMessageDialog(null, "'" + bil + "'"
+ " bukan angka !!"
+ "\nMasukkan angka saja !!");
outTerbilang();
}
}
public static void hasilPecahan() {
int desimal;
String str = JOptionPane.showInputDialog("Masukkan bilangan yang akan dipecah : ");
try {
if (str.isEmpty()) {
JOptionPane.showMessageDialog(null, "Kok kosong ?? Isi dulu ya.. !!");
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 = " + satuSetelah itu, masukkan script berikut untuk option kembali (mulai kembali dari mengisi nama) :
+ "\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);
}
} catch (NullPointerException not) {
JOptionPane.showMessageDialog(null, "Isi dulu bilangannya !!");
hasilPecahan();
} catch (NumberFormatException nae) {
JOptionPane.showMessageDialog(null, "'" + str + "'"
+ " bukan angka !!"
+ "\nMasukkan angka saja !!");
hasilPecahan();
}
}
public static void kembaliMenu(){Selanjutnya masukkan script untuk menampilkan menu-nya :
inpNama();
jeniskelamin();
}
public static void menuJOption(){Dan terakhir masukkan script berikut. Script yang pendek, tapi paling penting :
//... Text untuk tombol.
inpNama();
jeniskelamin();
String[] pilihan = {"Biner", "Hexa", "Oktal", "Terbilang", "Pecahan", "Kembali", "<<KELUAR>>"};
//... "Infinite" loop, selesai jika System.exit(0)
while (true) {
int response = JOptionPane.showOptionDialog(null //Tengah window.
, "Selamat Datang "+panggilan+" "+name+" !! "
+ "\nPilih Konversi Bilangan di bawah 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 yg ditekan.
switch (response) {
case 0:
outHasilBiner();
break;
case 1:
outHasilHexa();
break;
case 2:
outHasilOktal();
break;
case 3:
outTerbilang();
break;
case 4:
hasilPecahan();
break;
case 5:
kembaliMenu();
break;
case 6:
case -1:
//... antara tombol (6) dan close box(-1) ditangani di sini.
System.exit(0); //keluar looping, tapi..
default:
//... jika kita di sini ada kesalahan,
JOptionPane.showMessageDialog(null, "response salah "+ response);break;
}
}
}
public static void main(String[] args) {
menuJOption();
}
}
Ini contoh dari output pecahan |
Ini contoh putput terbilang |
Tidak ada komentar:
Posting Komentar