Senin, 17 September 2012

InputJOptionPane Java


Malam ini saya akan memperkenalkan tentang JOptionPane, terutama dalam program yang sudah jadi. Langsung aja simak :D


package Praktek1;

import javax.swing.JOptionPane;


/**
 *
 * @author FERIYAL
 */


public class InputJOptionPane {
  private static String nama;
  private static String sapaan;
  private static String age;
  private static String jenis_kl;
  public static int gender;
  private static int des;
  private static int validDes;
  private static StringBuilder hasil;
  public static void main(String ftm[]){
  inpNama();
  }
  public static void inpNama() {
  nama = JOptionPane.showInputDialog(null,"Siapa nama anda ?","Input nama",JOptionPane.QUESTION_MESSAGE);
  try{
  //TIDAK BOLEH DIDAHULUI ANGKA
  if(nama.isEmpty()){
  JOptionPane.showMessageDialog(null,"Nama tidak boleh kosong","Error!", JOptionPane.ERROR_MESSAGE);
  inpNama();
  }
  else if(nama.matches("^([0-9]{1,})|([0-9]{1,})+([a-zA-Z_]{1,})")){
  JOptionPane.showMessageDialog(null,"Tidak boleh didahului angka","Notice!", JOptionPane.INFORMATION_MESSAGE);
  inpNama();
  }
  else{
  inpJK();
  }
  /* SAMA SEKALI TANPA ANGKA
  for(int f=0;f<nama.length();f++){
  if(Character.isDigit(nama.charAt(f))){
  JOptionPane.showMessageDialog(null,"Tidak boleh mengandung angka","Notice!", JOptionPane.INFORMATION_MESSAGE);
  inpNama();
  }
  }
  inpJK();
  */
  }
  catch(NullPointerException f){
  JOptionPane.showMessageDialog(null,"Jangan di Cancel","Error!", JOptionPane.ERROR_MESSAGE);
  inpNama();
  }
  }
  public static void inpJK() {
  String[] pilihan = {"Laki-laki","Perempuan"};
  gender = JOptionPane.showOptionDialog(null
  ,"Jenis Kelamin anda?"
  ,"Pilih Jenis Kelamin"
  ,JOptionPane.YES_NO_CANCEL_OPTION
  ,JOptionPane.QUESTION_MESSAGE
  ,null
  ,pilihan
  ,null
  );
  if(gender==-1){
  JOptionPane.showMessageDialog(null, "Pilih jenis kelamin dulu","Jenis Kelamin!",JOptionPane.ERROR_MESSAGE);
  inpJK();
  }
  else{
  inpAge();
  }
  }
  public static void inpAge(){
  age = JOptionPane.showInputDialog(null, "Umum berapa anda sekarang ?", "Input umur",JOptionPane.QUESTION_MESSAGE);
  try{
  int validAge;
  validAge=Integer.parseInt(age);
  if(validAge>50){
  JOptionPane.showMessageDialog(null, "Tampaknya anda terlalu tua :D","Umur over!",JOptionPane.ERROR_MESSAGE);
  inpAge();
  }
  else if(validAge>30){
  switch(gender){
  case 0 : sapaan="Bapak";
  break;
  case 1 : sapaan="Ibu";
  break;
  }
  menu_1();
  }
  else{
  switch(gender){
  case 0 : sapaan="agan";
  break;
  case 1 : sapaan="sist";
  break;
  }
  menu_1();
  }
  }
  catch(NumberFormatException ft){
  try{
  if(age.isEmpty()){
  JOptionPane.showMessageDialog(null, "Jangan dikosongi dong,\n kami perlu tahu umur anda!", "Error!", JOptionPane.ERROR_MESSAGE);
  inpAge();
  }
  else{
  JOptionPane.showMessageDialog(null, "Inputkan angka !", "Error!", JOptionPane.ERROR_MESSAGE);
  inpAge();
  }
  }
  catch(NullPointerException f){
  JOptionPane.showMessageDialog(null, "Jangan dicancel dong,\n kami perlu tahu umur anda!", "Error!", JOptionPane.ERROR_MESSAGE);
  inpAge();
  }
  }
  }
  public static void menu_1() {
  int konv_bilang;
  String options[] = {"Konversi Bilangan","Membilang & Pecahan","<<BACK","KELUAR>>"};
  konv_bilang = JOptionPane.showOptionDialog(null,
  "Selamat datang "+sapaan+" "+nama+"!!!\nPilih menu berikut",
  "Main Menu", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE,
  null, options, null);
  switch(konv_bilang){
  case 0 : menu_konversi();
  break;
  case 1 : menu_bilangan();
  break;
  case 2 : inpNama();
  break;
  case 3 :
  case -1 : konfirm_exit("menu_1");
  break;
  }
  }
  public static void konfirm_exit(String menu) {
  int konfirmasi ;
  konfirmasi = JOptionPane.showConfirmDialog(null, sapaan+" "+nama+", Anda yakin mau keluar ?","Exit Confirmation", JOptionPane.YES_NO_OPTION);
  switch(konfirmasi){
  case -1:
  case 0 : System.exit(0);
  break;
  case 1 :
  if("menu_1".equals(menu)){
  menu_1();
  }
  else if("menu_konversi".equals(menu)){
  menu_konversi();
  }
  else if("menu_bilangan".equals(menu)){
  menu_bilangan();
  }
  break;
  }
  }
  public static void menu_konversi() {
  String option[] = {"BINER","HEXA","OKTAL","<<BACK>>","KELUAR>>"};
  int respons = JOptionPane.showOptionDialog(null
  ,"Konversi dari Desimal ke ?"
  ,"Pilih Konversi"
  ,JOptionPane.YES_NO_CANCEL_OPTION
  ,JOptionPane.QUESTION_MESSAGE
  ,null
  ,option
  ,null
  );
  switch(respons){
  case 0 : konv("Biner");
  break;
  case 1 : konv("Heksa");
  break;
  case 2 : konv("Oktal");
  break;
  case 3 : menu_1();
  break;
  case 4 :
  case -1 : konfirm_exit("menu_konversi");
  break;
  }
  }
  private static void tampilkonv(int des, String ke) {
  hasil= new StringBuilder();
  if(ke.equals("Biner")){
  Biner(des);
  }
  else if(ke.equals("Oktal")){
  Oktal(des);
  }
  else if(ke.equals("Heksa")){
  Heksa(des);
  }
  System.out.println("\n\nBilangan desimal : "+des+" "+ke+"nya Adalah: "+hasil);
  JOptionPane.showMessageDialog(null, "Bilangan desimal : "+des+" "+ke+"nya Adalah: "+hasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
  menu_konversi();
  }
  private static void InpBil(String fungsi) {
  String apa = null;
  if("Biner".equals(fungsi)||"Heksa".equals(fungsi)||"Oktal".equals(fungsi)){
  apa = "dikonversikan ke "+fungsi;
  }
  else if("bilang".equals(fungsi)){
  apa = "di"+fungsi+"kan/dibaca (maksimal satu milyard)";
  }
  else if("desimal".equals(fungsi)||"rupiah".equals(fungsi)){
  apa = "dipecah dalam "+fungsi+" (maksimal satu milyard)";
  }
  String bildes = JOptionPane.showInputDialog(null, "Inputkan bilangan desimal \n untuk "+apa, "Input desimal", JOptionPane.INFORMATION_MESSAGE);
  try{
  validDes=Integer.parseInt(bildes);
  if(validDes>1000000000){
  JOptionPane.showMessageDialog(null, "Nilai terlalu besar, maksimal satu milyard !", "Error!", JOptionPane.ERROR_MESSAGE);
  InpBil(fungsi);
  }
  }
  catch(NumberFormatException ft){
  JOptionPane.showMessageDialog(null, "Inputkan angka !", "Error!", JOptionPane.ERROR_MESSAGE);
  InpBil(fungsi);
  }
  }
  private static void konv(String konv) {
  if(konv.equals("Biner")){
  InpBil("Biner");
  des = validDes;
  tampilkonv(des,"Biner");
  }
  else if (konv.equals("Heksa")){
  InpBil("Heksa");
  des = validDes;
  tampilkonv(des,"Heksa");
  }
  else if (konv.equals("Oktal")){
  InpBil("Oktal");
  des = validDes;
  tampilkonv(des,"Oktal");
  }
  }
  private static void Biner(int n) {
  String biner = null;
  if(n>1){
  Biner(n/2);
  }
  hasil.append(n%2);
  }
  private static void Heksa(int n) {
  char [] daftarHexa={'0','1','2','3','4','5','6','7','8','9','A','B','C',
  'D','E','F'};
  if (n>1){
  Heksa (n/16);
  }
  hasil.append(daftarHexa[n%16]);
  }
  private static void Oktal(int n) {
  if(n>1){
  Oktal(n/8);
  }
  hasil.append(n%8);
  }
  private static void menu_bilangan() {
  String option[] = {"TERBILANG","PECAHAN RUPIAH","PECAHAN DESIMAL","<<BACK>>","KELUAR>>"};
  int respons = JOptionPane.showOptionDialog(null
  ,"Pilih :"
  ,"Pilih Menu Membilang atau Pecahan"
  ,JOptionPane.YES_NO_CANCEL_OPTION
  ,JOptionPane.QUESTION_MESSAGE
  ,null
  ,option
  ,null
  );
  switch(respons){
  case 0 : bil_pec("bilang");
  break;
  case 1 : bil_pec("rupiah");
  break;
  case 2 : bil_pec("desimal");
  break;
  case 3 : menu_1();
  break;
  case 4 :
  case -1 : konfirm_exit("menu_bilangan");
  break;
  }
  }
  private static void bil_pec(String bilang) {
  if(bilang.equals("bilang")){
  InpBil("bilang");
  des = validDes;
  tampilbil(des,"bilang");
  }
  else if(bilang.equals("rupiah")){
  InpBil("rupiah");
  des = validDes;
  tampilbil(des,"rupiah");
  }
  else if(bilang.equals("desimal")){
  InpBil("desimal");
  des = validDes;
  tampilbil(des,"desimal");
  }
  }
  private static void tampilbil(int des, String bilang) {
  hasil= new StringBuilder();
  String apase = "Bilangan";
  String diapakan = " dipecah menjadi";
  String petik=" ";
  String apa="Pecahan";
  if(bilang.equals("bilang")){
  Bilang(des);
  diapakan = " dibaca";
  petik="'";
  apa = "Terbilang";
  }
  else if(bilang.equals("rupiah")){
  Pecah_rupiah(des);
  apase="Uang Rp.";
  apa+=" rupiah";
  }
  else if(bilang.equals("desimal")){
  Pecah_desimal(des);
  apa+=" desimal";
  }
  System.out.println("\n"+apase+" "+des+diapakan+" : \n\n"+petik+hasil+petik);
  JOptionPane.showMessageDialog(null,apase+" "+des+diapakan+" : \n"+petik+hasil+petik,"Hasil "+apa,JOptionPane.INFORMATION_MESSAGE);
  menu_bilangan();
 
  }
 public static void Bilang(int des) {
int f = 0;
String angka[] = {""," Se"," Dua "," Tiga "," Empat "," Lima "," Enam "," Tujuh "," Delapan "," Sembilan "};
String angka_2[] = {""," Satu "," Dua "," Tiga "," Empat "," Lima "," Enam "," Tujuh "," Delapan "," Sembilan "};
//String satuan[] = {""," puluh "," belas "," ratus "," ribu "," belas ribu "};
if(des>=1000000000){
hasil.append(angka_2[des/1000000000]);
hasil.append("milyar ");
des%=1000000000;
}
if(des>=100000000){
hasil.append(angka[des/100000000]);
if(des%100000000>1000000){
hasil.append("ratus ");
}
else{
hasil.append("ratus juta ");
}
des%=100000000;
}
if(des>=10000000){
int bantuan=des/1000000;
if(bantuan<20&&bantuan>10){
hasil.append(angka[bantuan%=10]);
hasil.append("belas juta ");
des=(des%10000000)-(bantuan%=10)*1000000;
}
else{
hasil.append(angka[des/10000000]);
if(des%10000000>=1000000){
hasil.append("puluh ");
}
else{
hasil.append("puluh juta ");
}
des%=10000000;
}
}
if(des>=1000000){
hasil.append(angka_2[des/1000000]);
hasil.append("juta ");
des%=1000000;
}
if(des>=100000){
hasil.append(angka[des/100000]);
if(des%100000>1000){
hasil.append("ratus ");
}
else{
hasil.append("ratus ribu ");
}
des%=100000;
}
if(des>=10000){
f++;
int bantuan=des/1000;
if(bantuan<20&&bantuan>10){
hasil.append(angka[bantuan%=10]);
hasil.append("belas ribu ");
des=(des%10000)-(bantuan%=10)*1000;
}
else{
hasil.append(angka[des/10000]);
if(des%10000>=1000){
hasil.append("puluh ");
}
else{
hasil.append("puluh ribu ");
}
des%=10000;
}
}
if(des>=1000){
if(f==1){
hasil.append(angka_2[des/1000]);
}
else{
hasil.append(angka[des/1000]);
}
hasil.append("ribu ");
des%=1000;
}
if(des>=100){
hasil.append(angka[des/100]);
hasil.append("ratus ");
des%=100;
}
if(des>=10){
if(des<20&&des>10){
hasil.append(angka[des%=10]);
hasil.append("belas ");
des=0;
}
else{
hasil.append(angka[des/10]);
hasil.append("puluh ");
des%=10;
}
}
hasil.append(angka_2[des]);
}
public static void Pecah_rupiah(int des) {
int A,B,C,D,E,F,G,H,I,J,K ;

A=des/100000;
des%=100000;

B=des/50000;
des%=50000;

C=des/20000;
des%=20000;

D=des/10000;
des%=10000;

E=des/5000;
des%=5000;

F=des/2000;
des%=2000;

G=des/1000;
des%=1000;

H=des/500;
des%=500;

I=des/100;
des%=100;

J=des/50;
des%=50;

K=des/1;

hasil.append(
"Banyaknya seratus ribuan      = "+A
+"\n Banyaknya lima puluh ribuan = "+B
+"\n Banyaknya dua puluh ribuan  = "+C
+"\n Banyaknya sepuluh ribuan     = "+D
+"\n Banyaknya lima ribuan            = "+E
+"\n Banyaknya dua ribuan             = "+F
+"\n Banyaknya seribuan                = "+G
+"\n Banyaknya lima ratusan         = "+H
+"\n Banyaknya seratusan              = "+I
+"\n Banyaknya lima puluhan         = "+J
+"\n sisa                                              = "+K
+"\n\n *) pecahan menurut pecahan rupiah\n   Digunakan pecahan terbesar dahulu");
}
public static void Pecah_desimal(int des) {
int A,B,C,D,E,F,G,H,I,J,K,L,M ;

A=des/1000000000;
des%=1000000000;

B=des/100000000;
des%=100000000;

C=des/10000000;
des%=10000000;

D=des/1000000;
des%=1000000;

E=des/100000;
des%=100000;

F=des/10000;
des%=10000;

G=des/1000;
des%=1000;

H=des/100;
des%=100;

I=des/10;
des%=10;

J=des/1;


hasil.append(
"Nilai milyaran        = "+A
+"\n Nilai ratusan juta  = "+B
+"\n Nilai puluhan juta  = "+C
+"\n Nilai jutaan             = "+D
+"\n Nilai ratusan ribu  = "+E
+"\n Nilai puluhan ribu  = "+F
+"\n Nilai ribuan             = "+G
+"\n Nilai ratusan          = "+H
+"\n Nilai puluhan          = "+I
+"\n Nilai satuan            = "+J

+"\n\n *) pecahan menurut bilangan desimal");
}
}

Tidak ada komentar:

Posting Komentar