Kali ini saya akan posting tentang cara untuk konversi bilangan dengan cara menginputkan data diri dan ada tambahan untuk menyebutkan bilangan yang diinputkan dengan kalimat. dan program ini sedikit lebih panjang dari program yang sebelumnya
public static void keBiner(int n) {
berikut ini codingnya :
1. letakkan coding berikut di bawah nama package anda
import javax.swing.JOptionPane;2. lalu tuliskan coding berikut di bawah nama class anda
private static String name;3. kemudian tuliskan coding berikut untuk proses konversi bilangan Biner, Hexa dan Octal
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 keBiner(int n) {
if (n > 1) {4. letakkan coding berikut untuk menginputkan bilangan desimal
keBiner(n / 2);
}
System.out.print(n % 2);
binerHasil.append(n % 2);
}
public static void keHexa(int n) {//int n : parameter
char[] Hexa = {'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(Hexa[n % 16]);
hexaHasil.append(Hexa[n % 16]);
}
}
public static void keOktal(int n) {
char[] Oktal = {'0', '1', '2', '3', '4', '5', '6', '7'};
if (n > 0) {
keOktal(n / 8);
System.out.print(Oktal[n % 8]);
oktalHasil.append(Oktal[n % 8]);
}
}
public static void inputDesJOption(){5. tuliskan coding berikut untuk menampilkan proses konversi bilangan
des=JOptionPane.showInputDialog("Masukkan Bilangan Desimal : ");
try{
if(des.isEmpty()){
JOptionPane.showMessageDialog(null, "Maaf, Bilangan Desimal tidak boleh kosong !!");
inputDesJOption();
}
}
catch(NullPointerException npa){
JOptionPane.showMessageDialog(null, "Maaf, Harus Inputkan Data !!");
inputDesJOption();
}
}
public static void outHasilBiner() {
inputDesJOption();
try {//untuk mengatasi kesalahan
validDes = Integer.parseInt(des);
System.out.print("\n Bilangan desimal : " + des + "Hasil Konversi Bilangan : ");
keBiner(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + "Hasil Konversi Bilangan : " + binerHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
// reset object
binerHasil = new StringBuilder();
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "'" + des + "'"
+ " Maaf Inputan Anda bukan angka !!"
+ "\nTolong Masukkan Angka !!");
outHasilBiner();
}
}
public static void outHasilHexa() {
inputDesJOption();
try {//untuk mengatas kesalahan
validDes = Integer.parseInt(des);
System.out.print("\n Bilangan desimal : " + des + " Hasil Konversi Bilangan : ");
keHexa(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " Hasil Konversi Bilangan : " + hexaHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
hexaHasil = new StringBuilder();
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "'" + des + "'"
+ "Maaf Inputan Anda Bukan Angka !!"
+ "\nTolong Masukkan Angka !!");
outHasilHexa();
}
}
public static void outHasilOktal() {
inputDesJOption();
try {//untuk mengatasi kesalahan
validDes = Integer.parseInt(des);
System.out.print("\n Bilangan desimal : " + des + " Hasil Konversi Bilangan : ");
keOktal(validDes);
System.out.println("\n");
JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " Hasik Konversi Bilangan : " + oktalHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
oktalHasil = new StringBuilder();
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "'" + des + "'"
+ " Maaf, Inputan Anda Bukan Angka !!"
+ "\nTolong Masukkan Angka !!");
outHasilOktal();
}
}
6. coding berikut untuk menampilkan input nama dan gender
//menampilkan input dialog nama7. coding berikut untuk menampilkan proses terbilang dan menampilkannyapublic static void inpNama(){
name=JOptionPane.showInputDialog("Inputkan Nama : ");
try{
if(name.isEmpty()){
JOptionPane.showMessageDialog(null, "Maaf, Nama Harus Diisi !!");
inpNama();
}
}
catch(NullPointerException npe){
JOptionPane.showMessageDialog(null, "Harap Inputkan Nama Anda !!");
inpNama();
}
}
//menampilkan input dialog jenis Kelamin (gender)
public static void jenisKelamin(){
gender=JOptionPane.showInputDialog("Inputkan Jenis Kelamin Anda : ");
try{
if(gender.isEmpty()){
JOptionPane.showMessageDialog(null, " Jenis Kelamin Harus Diisi ???");
jenisKelamin();
}
}
catch(NullPointerException npt){
JOptionPane.showMessageDialog(null, "Harap inputkan jenis kelamin ???");
jenisKelamin();
}
if ("Pria".equals(gender)) {
kelamin="Agan, ";
}
else{
if("Wanita".equals(gender)){
kelamin="Aganwati, ";
}
else{
JOptionPane.showMessageDialog(null, "Hanya bisa diisi Pria dan Wanita saja !!");
jenisKelamin();
}
}
}
//Terbilang8. coding berikut untuk menampilkan hasil pecahan
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 yang anda inputkan 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 di tampilkan : ");
try {
if (sc.isEmpty()) {
JOptionPane.showMessageDialog(null, "Maaf, inputan anda kosong, Harap Diisi dahulu !!");
outTerbilang();
} else {
JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
}
} catch (NullPointerException not) {
JOptionPane.showMessageDialog(null, "Harap Diisi Dahulu Sebelum Keluar !!");
outTerbilang();
} catch (NumberFormatException nae) {
JOptionPane.showMessageDialog(null, "Maaf '" + sc + "'"
+ " Maaf Inputan Anda Bukan Angka !!"
+ "\nTolong Masukkan angka !!");
outTerbilang();
}
}
public static void hasilPecahan() {9. coding berikut untuk melooping nama dan gender
int desimal;
String str = JOptionPane.showInputDialog("Inputkan bilangan yang akan dipecah : ");
try {
if (str.isEmpty()) {
JOptionPane.showMessageDialog(null, "Maaf, Inputan Anda Kosong, Harap Diisi Dahulu !!");
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);
}
} catch (NullPointerException not) {
JOptionPane.showMessageDialog(null, "Harap Isi Dahulu Bilangannya !!");
hasilPecahan();
} catch (NumberFormatException nae) {
JOptionPane.showMessageDialog(null, "Maaf '" + str + "'"
+ " Inputan Anda Bukan Angka !!"
+ "\nTolong Masukkan Angka !!");
hasilPecahan();
}
}
public static void kembaliMenu(){10. coding berikut untuk menampilkan menu
inpNama();
jenisKelamin();
}
public static void menuJOption(){11. coding yang terakhir adalah untuk menampilkan hasil dari coding yang telah di buat
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 Messagebox
, JOptionPane.YES_NO_OPTION // Tipe Option
, JOptionPane.PLAIN_MESSAGE // Tipe Pesan
, null
, pilihan
, null // Default button
);
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:
System.exit(0);
default:
JOptionPane.showMessageDialog(null, "response salah"
+ response); break;
}
}
}
public static void main(String[] args){menuJOption();
}