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
01.
import
java.util.Scanner;
02.
public
class
TebakAngka {
03.
04.
static
Scanner sc =
new
Scanner(System.in);
05.
06.
public
static
void
main(String[] args) {
07.
int
angkaSembunyi =
1000
;
08.
int
tebakan;
09.
10.
do
{
11.
System.out.print(
"tebakan anda: "
);
12.
tebakan = sc.nextInt();
13.
if
(tebakan==angkaSembunyi)
14.
{ System.out.println(
"tebakan anda jitu !!! "
);
15.
break
;
// keluar dari loop
16.
}
17.
}
while
((tebakan <=
0
) || (tebakan > angkaSembunyi));
18.
System.out.println(
"trimzzz sudah menebak "
);
19.
}
20.
}
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).
01.
import
java.util.Scanner;
02.
public
class
KonversiNilaiAngka {
03.
04.
static
char
nilaiHuruf(
int
nilai)
05.
{
06.
char
nhuruf;
07.
if
(nilai >=
90
)
08.
nhuruf =
'A'
;
09.
else
if
(nilai >=
80
)
10.
nhuruf =
'B'
;
11.
else
if
(nilai >=
70
)
12.
nhuruf =
'C'
;
13.
else
if
(nilai >=
60
)
14.
nhuruf =
'D'
;
15.
else
16.
nhuruf =
'E'
;
17.
return
nhuruf;
18.
}
19.
20.
public
static
void
main(String[] args) {
21.
int
nilaiAngka;
22.
char
nh;
23.
24.
Scanner sc =
new
Scanner(System.in);
25.
26.
do
{
27.
System.out.print(
"nilai : "
);
28.
nilaiAngka = sc.nextInt();
29.
nh=nilaiHuruf(nilaiAngka);
// nh menerima "return"
30.
System.out.println(
"Nilai : "
+nilaiAngka+
" "
+nh);
31.
}
while
((nilaiAngka >
0
) && (nilaiAngka <=
100
));
32.
System.out.println(
" while loop selesai"
);
33.
}
34.
}
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 sajasupaya contoh hitung upah makin terang, kita coba lagi dengan do .. while
01.
import
javax.swing.*;
02.
03.
class
HitungUpah
04.
{
05.
static
String InputString(String s1)
06.
{
return
JOptionPane.showInputDialog(s1); }
07.
static
int
InputInteger(String s1)
08.
{
09.
int
i;
10.
String x=JOptionPane.showInputDialog(s1);
11.
try
{
12.
i=Integer.parseInt(x);
13.
}
14.
catch
(Exception e){ i=
100
; }
15.
return
i;
16.
}
17.
18.
public
static
void
main(String[] args)
19.
{
20.
String nama;
21.
int
jam_kerja,jam_lembur,upah_per_jam,lembur_per_jam,gol,
22.
upah,upah_lembur;
23.
do
24.
{
25.
nama=InputString(
"Karyawan"
);
26.
gol=InputInteger(
"Golongan"
);
27.
if
(gol==
100
)
continue
;
28.
if
(gol<
1
| gol>
5
)
break
;
29.
jam_kerja=InputInteger(
"JamKerja"
);
30.
if
(jam_kerja==
100
)
continue
;
31.
if
(jam_kerja >
40
)
32.
{ jam_lembur=jam_kerja-
40
;
33.
jam_kerja=
40
; }
34.
else
35.
{jam_lembur=
0
;}
36.
switch
(gol) {
37.
case
1
: upah_per_jam=
2000
; lembur_per_jam=
3000
;
break
;
38.
case
2
: upah_per_jam=
2500
; lembur_per_jam=
4000
;
break
;
39.
case
3
: upah_per_jam=
3500
; lembur_per_jam=
5000
;
break
;
40.
case
4
: upah_per_jam=
5000
; lembur_per_jam=
7000
;
break
;
41.
case
5
: upah_per_jam=
7500
; lembur_per_jam=
9000
;
break
;
42.
default
: upah_per_jam=
0
; lembur_per_jam=
0
;
break
;
43.
}
44.
upah=jam_kerja*upah_per_jam;
45.
upah_lembur=jam_lembur*lembur_per_jam;
46.
System.out.println(nama+
"\t"
+upah+
"\t"
+upah_lembur);
47.
//
48.
// silakan modifikasi tampilan data input dan hasil hitung
49.
//
50.
}
while
(gol<
1000
);
51.
}
52.
}
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).
penjelasan program sudah ada di contoh sebelumnya.