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