Konstruksi do .. while pada java serupa dengan repeat until pada Pascal
do {
  
} while(logical expression)
logical expression: ekspresi yang hasilnya true atau false.
misalnya (i<10) atau lebih kompleks (berat>70 & tinggi<160)
contoh 1: tebak angka
Sekaligus memperkenalkan cara input dari keyboard dengan class Scanner
Program akan berhenti meminta input jika angka yang diketik 0 (nol) atau lebih besar dari 1000. Atau jika tebakan jitu
import java.util.Scanner;
public class TebakAngka {
  static Scanner sc = new Scanner(System.in);
  public static void main(String[] args) {
    int angkaSembunyi = 1000;
    int tebakan;
    do {
      System.out.print(“tebakan anda: “);
      tebakan = sc.nextInt();
      if (tebakan==angkaSembunyi)
      {  System.out.println(“tebakan anda jitu !!! “);
          break; // keluar dari loop
      }
    } while ((tebakan <= 0) || (tebakan > angkaSembunyi));
    System.out.println(“trimzzz sudah menebak “);
  }
}
contoh di atas masih belum aman karena jika input dari keyboard bukan angka, program akan error! Wanted!!!contoh yang ada pencegah run time error/exception
  
contoh satu lagi … dengan tambahan mengunakan sub-routine
Program
 berikut akan berulang-ulang meminta nilai angka dan dikonversi menjadi 
nilai huruf. Program akan berhenti jika input 0 atau > 100 (atau 
minus).
import java.util.Scanner;
public class KonversiNilaiAngka {
  static char nilaiHuruf(int nilai)
  {
    char nhuruf;
    if (nilai >= 90)
        nhuruf = ‘A’;
    else if (nilai >= 80)
        nhuruf = ‘B’;
    else if (nilai >= 70)
        nhuruf = ‘C’;
    else if (nilai >= 60)
        nhuruf = ‘D’;
    else
        nhuruf = ‘E’;
    return nhuruf;
  }
  public static void main(String[] args) {
    int nilaiAngka;
    char nh;
    Scanner sc = new Scanner(System.in);
    do {
      System.out.print(“nilai : “);
      nilaiAngka = sc.nextInt();
      nh=nilaiHuruf(nilaiAngka); // nh menerima “return”
      System.out.println(“Nilai : “+nilaiAngka+”   “+nh);
    } while ((nilaiAngka > 0) && (nilaiAngka <= 100));
    System.out.println(”  while loop selesai”);
  }
}
contoh screen prosesnya
nilai : 45
Nilai : 45 E
nilai : 78
Nilai : 78 C
nilai : 95
Nilai : 95 A
catatan
while ((nilaiAngka > 0) && (nilaiAngka <= 100));   gaya C, C++
dan
while ((nilaiAngka > 0) & (nilaiAngka <= 100));
sama saja
supaya contoh hitung upah makin terang, kita coba lagi dengan do .. while
import javax.swing.*;
class HitungUpah
{
static String InputString(String s1)
{ return JOptionPane.showInputDialog(s1); }
static int InputInteger(String s1)
{
   int i;
   String x=JOptionPane.showInputDialog(s1);
   try {
         i=Integer.parseInt(x);
   }
   catch(Exception e){ i=100; }
   return i;
}
public static void main(String[] args)
{
  String nama;
  int jam_kerja,jam_lembur,upah_per_jam,lembur_per_jam,gol,
  upah,upah_lembur;
  do
  {
    nama=InputString(“Karyawan”);
    gol=InputInteger(“Golongan”);
    if (gol==100) continue;
    if(gol<1 | gol>5) break;
    jam_kerja=InputInteger(“JamKerja”);
    if (jam_kerja==100) continue;
    if(jam_kerja > 40)
    { jam_lembur=jam_kerja-40;
      jam_kerja=40; }
    else
    {jam_lembur=0;}
    switch (gol) {
      case 1 : upah_per_jam=2000; lembur_per_jam=3000; break;
      case 2 : upah_per_jam=2500; lembur_per_jam=4000; break;
      case 3 : upah_per_jam=3500; lembur_per_jam=5000; break;
      case 4 : upah_per_jam=5000; lembur_per_jam=7000; break;
      case 5 : upah_per_jam=7500; lembur_per_jam=9000; break;
      default : upah_per_jam=0; lembur_per_jam=0; break;
    }
    upah=jam_kerja*upah_per_jam;
    upah_lembur=jam_lembur*lembur_per_jam;
    System.out.println(nama+”\t”+upah+”\t”+upah_lembur);
    //
    //    silakan modifikasi tampilan data input dan hasil hitung
    //
  } while (gol<1000);
}
}
Why 1000?
yang membuat 
loop selesai adalah jika bilangan selain 1 s.d.5 diisi pada saat input 
golongan. Kalau while(gol<4), nanti pada setelah ada input golongan 
5, loop selesai. while(gol>0) atau while(gol<6) akan berfungsi 
sama dengan while(gol<1000).
Thanks for reading & sharing Kamar Pekick


 
0 komentar:
Post a Comment