Berikut coding Menu Dari JOption tersebut
package Praktek1;
import javax.swing.JOptionPane;
/**
*
* @author Nadya Ayu
*/
public class MenuDariJOption {
private static String name;
private static String des;
private static String gender;
private static String kelamin;
private static int validDes;
static StringBuilder binerHasil = new StringBuilder();
static StringBuilder hexaHasil = new StringBuilder();
static StringBuilder oktalHasil = new StringBuilder();
static String sc;
public static void SelamatDatang() {
JOptionPane.showMessageDialog(null, "Selamat Datang di Aplikasi Ini :) ") ;
}
public static void keBiner(int n) {
if (n > 1) {
keBiner(n / 2);
}
System.out.print(n % 2);
binerHasil.append(n % 2);
// binerHasil.append("\033");
}
public static void keHexa(int n) {//int n : parameter
char[] daftarHexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
if (n > 0) {
keHexa(n / 16);
System.out.print(daftarHexa[n % 16]);
hexaHasil.append(daftarHexa[n % 16]);
}
}
public static void keOktal(int n) {
char[] daftarOktal = {'0', '1', '2', '3', '4', '5', '6', '7'};
if (n > 0) {
keOktal(n / 8);
System.out.print(daftarOktal[n % 8]);
oktalHasil.append(daftarOktal[n % 8]);
}
}
public static void inputDesJOption() {
des = JOptionPane.showInputDialog("Masukkan Bilangan Desimal : ");
try {
if (des.isEmpty()) {
JOptionPane.showMessageDialog(null, "Bilangan Desimalnya wajib diisi !!");
inputDesJOption();
}
} catch (NullPointerException npa) {
JOptionPane.showMessageDialog(null, "Wajib Diisi");
inputDesJOption();
}
public static void outHasilBiner() {
inputDesJOption();
try {//untuk melakukan penanganan kesalahan
validDes = Integer.parseInt(des);
System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Biner hasilnya : ");
keBiner(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Biner hasilnya : " + binerHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
// reset object binerHasil
binerHasil = new StringBuilder();
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "'" + des + "'"
+ " .... bukan angka !!"
+ "\nMasukkan angka saja !!");
outHasilBiner();
}
}
public static void outHasilHexa() {
inputDesJOption();
try {//untuk melakukan penanganan kesalahan
validDes = Integer.parseInt(des);
System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Hexa hasilnya : ");
keHexa(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Hexa hasilnya : " + 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 {//untuk melakukan penanganan kesalahan
validDes = Integer.parseInt(des);
System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Oktal hasilnya : ");
keOktal(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Oktal hasilnya : " + oktalHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
oktalHasil = new StringBuilder();
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "'" + des + "'"
+ " .... bukan angka !!"
+ "\nMasukkan angka saja !!");
outHasilOktal();
}
}
//menampilkan input dialog nama
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))){
JOptionPanr.showMessageDialog(null,"gak boleh alay !");
inpNama();
}
}
}
else{
for(int i=0;i<name.length();i++{
if(!Character.isLetter(name.charAt(i))){
JOptionPanr.showMessageDialog(null,"gak boleh alay !");
inpNama();
}
}
}
} catch (NullPointerException npe) {
JOptionPane.showMessageDialog(null, "Harap Diisi Nama Terlebih Dahulu!");
inpNama();
}
}
//menampilkan input dialog jenis Kelamin (gender)
public static void jenisKelamin() {
gender = JOptionPane.showInputDialog("Masukkan Jenis Kelamin Anda (cowok/cewek) : ");
try {
if (gender.isEmpty()) {
JOptionPane.showMessageDialog(null, "Jenis Kelamin Harus Diisi");
jenisKelamin();
}
} catch (NullPointerException npt) {
JOptionPane.showMessageDialog(null, "Apa Jenis Kelamin Anda");
jenisKelamin();
}
if ("cowok".equals(gender)) {
kelamin = "Saudara, ";
} else {
if ("cewek".equals(gender)) {
kelamin = "Saudari, ";
} else {
JOptionPane.showMessageDialog(null, "Hanya bisa diisi cowok dan cewek saja !!");
jenisKelamin();
}
}
}
//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() {
sc = JOptionPane.showInputDialog("Masukan Bilangan yang akan disebut : ");
try {
if (sc.isEmpty()) {
JOptionPane.showMessageDialog(null, "Isi Bilangan");
outTerbilang();
} else {
JOptionPane.showMessageDialog(null, new MenuDariJOption().Terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
}
} catch (NullPointerException not) {
JOptionPane.showMessageDialog(null, "Jangan keluar, Harus Diisi !!");
outTerbilang();
} catch (NumberFormatException nae) {
JOptionPane.showMessageDialog(null, "Hey '" + sc + "'"
+ " .... bukan angka !!"
+ "\nHanya Masukkan 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, "Jangan Kosong !!");
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",
}
} catch (NullPointerException not) {
JOptionPane.showMessageDialog(null, "Harap Diisi Bilangannya !!");
hasilPecahan();
} catch (NumberFormatException nae) {
JOptionPane.showMessageDialog(null, "Hey '" + str + "'"
+ " .... Bukan Angka"
+ "\nHanya Masukkan Angka");
hasilPecahan();
}
}
public static void kembaliMenu() {
inpNama();
jenisKelamin();
}
public static void menuJOption() {
inpNama();
jenisKelamin();
String[] pilihan = {"BINER", "HEXA", "OKTAL", "TERBILANG", "PECAHAN", "KEMBALI", "KELUAR"};
while (true) {
int response = JOptionPane.showOptionDialog(
null, "Selamat Datang " + kelamin + name + " !!"
+ "\nPilih Konversi Bilangan dibawah ini?"// Pesan
, "Konversi Bilangan" // Judul di Tittlebar
, JOptionPane.YES_NO_OPTION // Tipe Option
, JOptionPane.PLAIN_MESSAGE // Tipe Pesan
, null // tipe pesan
, pilihan // tombol next
, null / label tombol default
, pilihan // tombol next
, null / label tombol default
);
switch (response) {
case 0:
outHasilBiner();
break;
case 1:
outHasilHexa();
break;
case 2:
outHasilOktal();
break;
case 3:
outTerbilang();
break;
case 4:
hasilPecahan();
break;
case 5:
menuJOption();
break;
case 6:
case -1:
JOptionPane.showMessageDialog(null, "Terima Kasih :) ");
JOptionPane.showMessageDialog(null, "Terima Kasih :) ");
System.exit(0);
default:
JOptionPane.showMessageDialog(null, "response salah"
+ response);
break;
}
}
}
public static void main(String[] args) {
menuJOption();
}
}
Setelah selesai membuat coding, untuk menjalankan program tersebut tekanlah Shift + F6.
Maka hasilnya akan seperti :
Maka hasilnya akan seperti :
Jika nama belum di tulis, namun menekan OK maka akan muncul text box seperti
Namun jika menekan Cancel, akan muncul text box seperti
Jika dalam pengisian nama diberi spasi atau diberi angka
Maka akan muncul text box seperti
Setelah cobalah isi sesuai dengan nama Anda.
Setelah mengisi, lalu klik OK. Maka akan muncul text box jenis kelamin
Jika jenis kelamin belum di tulis, namun menekan OK maka akan muncul text box seperti
Namun jika menekan Cancel, akan muncul text box seperti
Jika pengisian jenis kelamin tidak cowok / cewek, maka akan muncul text box seperti
Isilah sesuai dengan jenis kelamin Anda
Kemudian tekan OK
Untuk menu pilihan Biner
Untuk menu pilihan Hexa
Untuk menu pilihan Oktal
Untuk menu pilihan Pecahan
Jika kita ingin kembali ke awal ( text box yang berisi nama ) maka pilihlah menu Kembali
Untuk keluar, pilihlah menu Keluar
Sekian codingnya. Semoga bermanfaat :)
0 komentar:
Posting Komentar