Konversi Bilangan menggunakan JOptionPane
Posted by
Unknown
| Friday, September 7, 2012 at 2:32 AM
0
comments
Labels :
ALL ABOUT JAVA
Pada posting sebelumnya saya telah menjelaskan bagai mana cara membuat program konversi bilangan menggunakan JAVA akan tetapi pada postingan tersebut hanya berbasis console dan kali ini ane akan posting tentang Konversi Bilangan menggunakan JOptionPane. yaitu semacam semi GUI.
Oke langkah-langkah yang harus dipersiapkan adalah :
1.siapkan netbeans
2.siuapkan project baru
3.buat new Java class pada source project teman-teman
4.tuliskan script di bawah ini ke page java kalian :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Praktek1;
import java.awt.Choice;
import java.io.PrintWriter;
import java.math.BigDecimal;
import javax.swing.JOptionPane;
/**
*
* @author Dian Bagus
*/
public class MenuDariJOption {
private static String name;
private static String des;
private static int validDes;
private static String gender;
private static int hasil;
private static int jumlah;
private static StringBuilder binerHasil= new StringBuilder();
private static StringBuilder hexaHasil= new StringBuilder();
private static StringBuilder oktalHasil= new StringBuilder();
private static StringBuilder pembagiHasil1= new StringBuilder();
private static StringBuilder pembagiHasil10= new StringBuilder();
private static StringBuilder pembagiHasil100= new StringBuilder();
private static StringBuilder pembagiHasil1000= new StringBuilder();
private static StringBuilder pembagiHasil10000= new StringBuilder();
private static StringBuilder pemecahHasil= new StringBuilder();
private final String PEMBAGI_SEPULUH = "10";
private final String PEMBAGI_SERATUS = "100";
private final String PEMBAGI_SERIBU = "1000";
private final String PEMBAGI_SEJUTA = "1000000";
private final String PEMBAGI_SEMILYAR = "1000000000";
private final String PEMBAGI_SETRILYUN = "1000000000000";
private static PrintWriter pw = new PrintWriter (System.out,true); //digunakan untuk merubah System.out menjadi pw
public static void keBiner(int n){
//konversi kebiner
if (n>1){
keBiner(n/2);
}
pw.print(n%2);
binerHasil.append(n%2);
}
public static void inputDesJOption(){
//input Desimal melalui JOption
des=JOptionPane.showInputDialog("Masukkan Bilangan Desimal : ");
try{
if(des.isEmpty()){
JOptionPane.showMessageDialog(null, "Bilangan Desimale kudu di isi !!");
inputDesJOption();
}
}
catch(NullPointerException npa){
JOptionPane.showMessageDialog(null, "Sepurane Kudu Diisiisi !!");
inputDesJOption();
}
}
public static void eksepsiInpBiner(){
//eksepsi inputan biner
inputDesJOption();
try{ //penjebakan kesalahan
validDes=Integer.parseInt(des); //menjadikan input string ke integer
JOptionPane.showMessageDialog(null,"\nDecimal dari "+des+", Binernya adalah = "+binerHasil); //menampilkan input(des) ke layer
keBiner(validDes); //dilempar ke method biner
pw.println();
}
catch(NumberFormatException error){ //menangkap kesalahan jika inputan bukan number
JOptionPane.showMessageDialog(null,des+" bukan angka mas beroo!!" + "\nMasukkan angka saja mas berooo!!"); //memberikan massage alert kesalahan
eksepsiInpBiner();
}
}
public static void outHasilBiner(){
eksepsiInpBiner();
//output hasil biner
}
public static void keHexa(int n){
char[] daftarHexa={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
if(n>1){
keHexa(n/16);
}
pw.print(daftarHexa[n%16]);
hexaHasil.append(daftarHexa[n%16]);
}
public static void eksepsiInpHexa(){
inputDesJOption();
try{ //penjebakan kesalahan
validDes=Integer.parseInt(des); //menjadikan input string ke integer
JOptionPane.showMessageDialog(null,"\nDecimal dari "+des+", Hexanya adalah = "+hexaHasil); //menampilkan input(des) ke layer
keHexa(validDes); //dilempar ke method biner
pw.println();
}catch(NumberFormatException error){ //menangkap kesalahan jika inputan bukan number
JOptionPane.showMessageDialog(null,des+" bukan angka mas beroo!!" + "\nMasukkan angka saja mas berooo!!"); //memberikan massage alert kesalahan
eksepsiInpHexa();
}
}
public static void outHasilHexa(){
eksepsiInpHexa();
}
public static void keOktal(int n){
int sisaBagi = n % 8;
if (n>0) {
keOktal((n- sisaBagi)/8);
pw.print(n%8);
oktalHasil.append(n%8);
}
}
public static void eksepsiInpOktal(){
inputDesJOption();
try{ //penjebakan kesalahan
validDes=Integer.parseInt(des); //menjadikan input string ke integer
keOktal(validDes); //dilempar ke method biner
pw.println();
JOptionPane.showMessageDialog(null,"\nDecimal dari "+des+", Octalnya adalah = "+ oktalHasil); //menampilkan input(des) ke layer
}catch(NumberFormatException error){ //menangkap kesalahan jika inputan bukan number
JOptionPane.showMessageDialog(null,des+" bukan angka mas beroo!!" + "\nMasukkan angka saja mas berooo!!"); //memberikan massage alert kesalahan
eksepsiInpOktal();
}
}
public static void outHasilOktal(){
eksepsiInpOktal();
}
public static void inpNama(){
name=JOptionPane.showInputDialog("Masukkan" + " Nama Anda :"); //memasukan inputan
try{
if(name.isEmpty()){ //ekspresi ketika nama tidak diisi
JOptionPane.showMessageDialog(null,"Nama tidak boleh kosong!!");
inpNama();//kembali imput nama
}
}catch(NullPointerException errorr){
JOptionPane.showMessageDialog(null, "Dadaa Mas beroo,suwuunn "); //menampilkan massage inputan
System.exit(0);//kembali input nama
}
}
public static void inpGender(){
// Membuat objek untuk mengganti nama tombol
Object[] o = {
"Ya", "Batal", "Tidak Tahu"};
// Membuat objek untuk menampilkan Teks dan Choice pada OptionPane
Object[] pilih = new Object[2];
// Teks
pilih[0] = "Apakah Jenis Gender Anda??";
// Choice
Choice l = new Choice();
l.addItem(" Pria");
l.addItem(" Wanita");
l.addItem(" Waria");
l.addItem(" Tidak Tahu");
pilih[1] = l;
// Menampilkan Option Dialog
int option = JOptionPane.showOptionDialog(null,
pilih, "Option",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null,
o,
o[0]);
// Mengambil item yang dipilih
String item = l.getSelectedItem();
gender=item;
switch (option) {
case 0: // Ya
JOptionPane.showMessageDialog(null,
"Anda Memilih \"" + item +
"\" sebagai Gender Anda");
break;
case 1: // Batal
JOptionPane.showMessageDialog(null, "Anda Batal Memilih Gender");
inpNama();
break;
case 2: // Tidak Tahu
JOptionPane.showMessageDialog(null,
"Anda Benar-Benar Tidak Tau Apa Gender Anda ???");
inpGender();
break;
}
}
public static void menuJOption(){
//membuat menu dengan JOption
//... teks untuk tombol
inpNama();
inpGender();
String[]pilihan = {"TERBILANG","PECAHAN","BINER","HEXA","OKTAL","KEMBALI","<< KELUAR >>"};
//...."Infanite" loop,selesai jika System.exit(0)
while (true){
int response = JOptionPane.showOptionDialog(
null // Tengah window.
, "Met Datang "+gender+" "+name+"!!"
+"\nPilih Konversi Bilangan dibawah 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 yang ditekan
switch (response){
case 0:
outPembilang(); //tombol terbilang
break;
case 1:
outPembagi(); //tombol pecahan
break;
case 2:
outHasilBiner(); //tombol biner
break;
case 3:
outHasilHexa(); //tombol hexa
break;
case 4:
outHasilOktal(); //tombol octal
break;
case 5:
inpNama();
break;
case 6:
System.exit(0); //keluar looping
default:
//.... jika kita disini ada kesalahan,
JOptionPane.showMessageDialog(null, "response salah"+response);
break;
}
}
}
public String getTerbilang(BigDecimal dataUang) {
final String CONST_SPASI = " ";
final String CONST_NOL = "0";
final String CONST_11 = "11";
final String CONST_19 = "19";
final String CONST_99 = "99";
final String CONST_199 = "199";
final String CONST_999 = "999";
final String CONST_1999 = "1999";
final String CONST_999_RIBU = "999999";
final String CONST_999_JUTA = "999999999";
final String CONST_999_MILYAR = "999999999999";
final String CONST_999_TRILYUN = "999999999999999";
StringBuilder result = new StringBuilder();
int satuan;
// cek apakah data minus
if (dataUang.compareTo(BigDecimal.ZERO) < 0) {
dataUang = dataUang.multiply(BigDecimal.ONE.negate());
result.append("Minus");
}
// data dianggap tidak minus
if (cekData(dataUang, CONST_NOL, CONST_11)) {
result.append(CONST_SPASI)
.append(getSatuan(dataUang.intValue()));
} else if (cekData(dataUang, CONST_11, CONST_19)) {
result.append(getTerbilang(mod(dataUang, PEMBAGI_SEPULUH)))
.append(CONST_SPASI)
.append("Belas");
} else if (cekData(dataUang, CONST_19, CONST_99)) {
result.append(getTerbilang(div(dataUang, PEMBAGI_SEPULUH)))
.append(CONST_SPASI)
.append("Puluh")
.append(getTerbilang(mod(dataUang, PEMBAGI_SEPULUH)));
} else if (cekData(dataUang, CONST_99, CONST_199)) {
result.append(CONST_SPASI)
.append("Seratus")
.append(getTerbilang(dataUang.subtract(new BigDecimal(PEMBAGI_SERATUS))));
} else if (cekData(dataUang, CONST_199, CONST_999)) {
result.append(getTerbilang(div(dataUang, PEMBAGI_SERATUS)))
.append(CONST_SPASI)
.append("Ratus")
.append(getTerbilang(mod(dataUang, PEMBAGI_SERATUS)));
} else if (cekData(dataUang, CONST_999, CONST_1999)) {
result.append(CONST_SPASI)
.append("Seribu")
.append(getTerbilang(dataUang.subtract(new BigDecimal(PEMBAGI_SERIBU))));
} else if (cekData(dataUang, CONST_1999, CONST_999_RIBU)) {
result.append(getTerbilang(div(dataUang, PEMBAGI_SERIBU)))
.append(CONST_SPASI)
.append("Ribu")
.append(getTerbilang(mod(dataUang, PEMBAGI_SERIBU)));
} else if (cekData(dataUang, CONST_999_RIBU, CONST_999_JUTA)) {
result.append(getTerbilang(div(dataUang, PEMBAGI_SEJUTA)))
.append(CONST_SPASI)
.append("Juta")
.append(getTerbilang(mod(dataUang, PEMBAGI_SEJUTA)));
}else if (cekData(dataUang, CONST_999_JUTA, CONST_999_MILYAR)){
result.append(getTerbilang(div(dataUang, PEMBAGI_SEMILYAR)))
.append(CONST_SPASI)
.append("Milyar")
.append(getTerbilang(mod(dataUang, PEMBAGI_SEMILYAR)));
}else if (cekData(dataUang, CONST_999_MILYAR, CONST_999_TRILYUN)){
result.append(getTerbilang(div(dataUang, PEMBAGI_SETRILYUN)))
.append(CONST_SPASI)
.append("Trilyun")
.append(getTerbilang(mod(dataUang, PEMBAGI_SETRILYUN)));
}
return result.toString();
}
// ambil terbilang untuk satuan
private String getSatuan(int data) {
switch (data) {
case 1: return "Satu";
case 2: return "Dua";
case 3: return "Tiga";
case 4: return "Empat";
case 5: return "Lima";
case 6: return "Enam";
case 7: return "Tujuh";
case 8: return "Delapan";
case 9: return "Sembilan";
case 10: return "Sepuluh";
case 11: return "Sebelas";
default: return " ";
}
}
// cek apakah data memenuhi syarat
private boolean cekData(BigDecimal dataPembanding, String strBatasBawah, String strBatasAtas) {
BigDecimal batasBawah = new BigDecimal(strBatasBawah);
BigDecimal batasAtas = new BigDecimal(strBatasAtas);
if (dataPembanding.compareTo(batasBawah) > 0) {
if (dataPembanding.compareTo(batasAtas) <= 0) {
return true;
}
}
return false;
}
// mengambil sisa hasil bagi
private BigDecimal mod(BigDecimal data, String strPembagi) {
BigDecimal pembagi = new BigDecimal(strPembagi);
return data.remainder(pembagi);
}
// mengambil hasil bagi dengan membuang angka dibelakang koma
private BigDecimal div(BigDecimal data, String strPembagi) {
BigDecimal pembagi = new BigDecimal(strPembagi);
return data.divide(pembagi, 1);
}
public static void outPembilang (){
inputDesJOption();
pw.println(new Terbilang().getTerbilang(new BigDecimal(des)));
pemecahHasil.append(new Terbilang().getTerbilang(new BigDecimal(des)));
JOptionPane.showMessageDialog(null,pemecahHasil);
}
public static void outPembagi(){
inputDesJOption();
validDes=Integer.parseInt(des);
int[] nilaiBilangan = new int[5];
pw.printf("angka %d\n", validDes);
int pembagi = 10000;
for(int i = 0; i < nilaiBilangan.length; i++){
nilaiBilangan[i] = validDes/pembagi % 10;
pembagi = pembagi / 10;
}
String[] namaTempat = {"puluhan ribu = ", "ribuan = ", "ratusan = ", "puluhan = ", "satuan = "};
for(int i = 0; i < nilaiBilangan.length; i++){
pw.printf("nilai %s = %d\n", namaTempat[i], nilaiBilangan[i]);
pembagiHasil1.append(namaTempat[i]+ nilaiBilangan[i]+"\n");
JOptionPane.showMessageDialog(null,pembagiHasil1);
}
}
public static void main(String[]args){
menuJOption();
}
}
5.Setelah Kalian salin maka coba jalankan dengan pencet tombol
shift+F6.
6.Setelah dijalankan maka program akan tampak seperti ini
- Pada bagian pembuka maka tampilan seperti sebagai berikut
nb: disini teman-teman diminta untuk memasukan nama masing-
masing
nb:tampilan massage berikutakan tampil jika kalian memilih
CANCEL.
nb : massage diatas akan keluar jika kalian tidak mengisi nama
-Kemudian Lanjut pada bagian selanjutnya
nb: Ini merupakan tampilan Option dari pemilihan gender.dapat
dilihat bahwa kotak option ini terdapat 3
tombol yaitu ya untuk ok , batal untuk tidak jadi memilih
dan tombol tidak tahu jika anda tidak tahu
gender anda :D
nb: Gambar diatas merupakan Pilihan dari macam-macam gender :
"pria","wanita","waria" dan yang terakhir
adalah "tidak tahu"
nb: Gambar diatas Akan muncul jika anda memilih option tidak tahu
nb : Pesan di atas akan muncul bila anda menekan batal
nb: Ketika anda selesai memilih maka akan keluar kotak massage sebagai konfirmasi bahwa Pilihan gender
anda itu tepat
-Setelah pemilihan gender maka teman-teman akan mlanjutkan ke
Menu selanjutnya.
nb: dapat dilihat bahwa ada tulisan nama dan jenis kalian
diatas.kemudian di bawahnya terdapat berbaga tombol
pilihan.
- Bila Teman-teman menekan tombol konversinya maka kalian akan
dihadapkan oleh kotak input seperti dibawah ini
nb : Pertama-tama kalian akan diminta untuk menginputkan
nilai dari bilangan desimal.
nb: Bila Kalian Tidak mengisi Inputan maka akan muncul massage seperti ini
nb: Pesan ini muncul bila anda mengcancel inputan tersebut.
bisa dikatakan anda dipaksa untuk mengisi inputan decimal
ini.
nb: Pesan tersebur akan tampil bila anda mengisi kotak input
bukan dengan angka
-Hasil dari Biner
-Hasil dari Oktal
-Hasil dari Hexa
-Konversi Pemecah
nb: sebagai contoh maka kita akan melakukan inputan seperti diatas
nb: Gambar diatas merupakan hasil dari konversi Pemecah Bilangan
-Konversi Pembilang
nb: Sebagai contoh kita akan melakukan inputan seperti diatas
nb : Hasilnya akan nampak seperti diatas
-Klik tombol kembali jika ingin melakukan inputan mulai awal.
-Klik tombol keluar jika ingin keluar dari program.
Sekian ya posting kali ini,tunggu posting-posting lainnya.jika ada kesalahan mohon isi komentar di bawah ini :D ,Terimakasih
Subscribe to:
Post Comments (Atom)