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 loop16. }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. else16. 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 HitungUpah04.{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. do24. {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. else35. {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 hitung49. //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.