Konversi, Pecahan, Jenis Kelamin (FULL EDITION)

Selamat Malam para SAVERIA. Lama nggak update blog. Kali ini ada banyak masalah di laptop. Jadi perlu banyak perbaikan terlebih dahulu. haha.

oke, ini adalah program java yang menggunakan scanner dan JOptionPane. Untuk jelasnya silahkan saja tulis ulang script dibawah ini. Tapi ingat para SAVERIA jangan dicopas ya, tulis ulang saja. Karena pasti rekan SAVERIA akan mudah mengerti. jadi mohon jangan di copas ya :D .

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Praktek1;

import javax.swing.JOptionPane;

/**
 *
 * @author satuhandharu
 */
public class Konversi_pecahan_jeniskelamin_scanner {
    private static String nama;
    private static String panggilan;
    private static String umur;
    private static int gender;
    private static int des;
    private static String jeniskel;
    private static int ValidDes;
    private static StringBuilder hasil;
   
    public static void main(String[] args) {
        inpNama();
  }
  public static void inpNama() {
  nama = JOptionPane.showInputDialog(null,"siapa nama anda ?","Input name",JOptionPane.QUESTION_MESSAGE);
  try{
  //TIDAK BOLEH DIDAHULUI ANGKA
  if(nama.isEmpty()){
  JOptionPane.showMessageDialog(null,"Nama harus diisi","Error !!!!!", JOptionPane.ERROR_MESSAGE);
  inpNama();
  }
  else if(nama.matches("^([0-9]{1,})|([0-9]{1,})+([a-zA-Z_]{1,})")){
  JOptionPane.showMessageDialog(null,"Nama tidak boleh didahului dengan angka","Peringatan!!", JOptionPane.INFORMATION_MESSAGE);
  inpNama();
  }
  else{
  inpJK();
  }
  /* Tidak menggunakan 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(){
  umur = JOptionPane.showInputDialog(null, "Umum berapa anda sekarang ?", "Input umur",JOptionPane.QUESTION_MESSAGE);
  try{
  int validAge;
  validAge=Integer.parseInt(umur);
  if(validAge>90){
  JOptionPane.showMessageDialog(null, "Maaf, tapi umur anda impossible","Umurnya impossible!",JOptionPane.ERROR_MESSAGE);
  inpAge();
  }
  else if(validAge>30){
  switch(gender){
  case 0 : panggilan="Bapak";
  break;
  case 1 : panggilan="Ibu";
  break;
  }
  menu_1();
  }
  else{
  switch(gender){
  case 0 : panggilan="brow";
  break;
  case 1 : panggilan="sist";
  break;
  }
  menu_1();
  }
  }
  catch(NumberFormatException ft){
  try{
  if(umur.isEmpty()){
  JOptionPane.showMessageDialog(null, "Jangan dikosongi ya,\n Setidaknya masukan umur anda!", "Error!", JOptionPane.ERROR_MESSAGE);
  inpAge();
  }
  else{
  JOptionPane.showMessageDialog(null, "Inputkan hanya angka !", "Error!", JOptionPane.ERROR_MESSAGE);
  inpAge();
  }
  }
  catch(NullPointerException f){
  JOptionPane.showMessageDialog(null, "Jangan dicancel ya,\n setidaknya masukan umur anda!", "Error!", JOptionPane.ERROR_MESSAGE);
  inpAge();
  }
  }
  }
  public static void menu_1() {
  int konv_bilang;
  String options[] = {"Konversi Bilangan","Membilang & Pecahan","BACK","OUT"};
  konv_bilang = JOptionPane.showOptionDialog(null,
  "Wellcome "+panggilan+" "+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, panggilan+" "+nama+", Anda yakin mau keluar ?","Exit Confirmation", JOptionPane.YES_NO_OPTION);
  switch(konfirmasi){
  case -1:
  case 0 : System.exit(0);
  break;
  case 1 :
      switch (menu) {
          case "menu_1":
              menu_1();
              break;
          case "menu_konversi":
              menu_konversi();
              break;
          case "menu_bilangan":
              menu_bilangan();
              break;
      }
  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();
        switch (ke) {
            case "Biner":
                Biner(des);
                break;
            case "Oktal":
                Oktal(des);
                break;
            case "Heksa":
                Heksa(des);
                break;
        }
  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;
        switch (fungsi) {
            case "Biner":
            case "Heksa":
            case "Oktal":
                apa = "dikonversikan ke "+fungsi;
                break;
            case "bilang":
                apa = "di"+fungsi+"kan/dibaca (maksimal satu milyard)";
                break;
            case "desimal":
            case "rupiah":
                apa = "dipecah dalam "+fungsi+" (maksimal satu milyard)";
                break;
        }
  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) {
        switch (konv) {
            case "Biner":
                InpBil("Biner");
                des = ValidDes;
                tampilkonv(des,"Biner");
                break;
            case "Heksa":
                InpBil("Heksa");
                des = ValidDes;
                tampilkonv(des,"Heksa");
                break;
            case "Oktal":
                InpBil("Oktal");
                des = ValidDes;
                tampilkonv(des,"Oktal");
                break;
        }
  }
  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) {
        switch (bilang) {
            case "bilang":
                InpBil("bilang");
                des = ValidDes;
                tampilbil(des,"bilang");
                break;
            case "rupiah":
                InpBil("rupiah");
                des = ValidDes;
                tampilbil(des,"rupiah");
                break;
            case "desimal":
                InpBil("desimal");
                des = ValidDes;
                tampilbil(des,"desimal");
                break;
        }
  }
  private static void tampilbil(int des, String bilang) {
  hasil= new StringBuilder();
  String apase = "Bilangan";
  String diapakan = " dipecah menjadi";
  String petik=" ";
  String apa="Pecahan";
        switch (bilang) {
            case "bilang":
                Bilang(des);
                diapakan = " dibaca";
                petik="'";
                apa = "Terbilang";
                break;
            case "rupiah":
                Pecah_rupiah(des);
                apase="Uang Rp.";
                apa+=" rupiah";
                break;
            case "desimal":
                Pecah_desimal(des);
                apa+=" desimal";
                break;
        }
  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      = ").append(A).append("\n Banyaknya lima puluh ribuan = ").append(B).append("\n Banyaknya dua puluh ribuan  = ").append(C).append("\n Banyaknya sepuluh ribuan     = ").append(D).append("\n Banyaknya lima ribuan            = ").append(E).append("\n Banyaknya dua ribuan             = ").append(F).append("\n Banyaknya seribuan                = ").append(G).append("\n Banyaknya lima ratusan         = ").append(H).append("\n Banyaknya seratusan              = ").append(I).append("\n Banyaknya lima puluhan         = ").append(J).append("\n sisa                                              = ").append(K).append(
    "\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        = ").append(A).append("\n Nilai ratusan juta  = ").append(B).append("\n Nilai puluhan juta  = ").append(C).append("\n Nilai jutaan             = ").append(D).append("\n Nilai ratusan ribu  = ").append(E).append("\n Nilai puluhan ribu  = ").append(F).append("\n Nilai ribuan             = ").append(G).append("\n Nilai ratusan          = ").append(H).append("\n Nilai puluhan          = ").append(I).append("\n Nilai satuan            = ").append(J).append(
    "\n\n *) pecahan menurut bilangan desimal");
}

}









~end coding~


selamat bercoding ria :D .

Posting Komentar