Perulangan menggunakan while pada bahasa pemrograman Java
- Variabel pada bahasa pemrograman Java
- Aturan penamaan dalam bahasa pemrograman Java
- Operator pada bahasa pemrograman Java
- Memahami operator modulus (%)
- Perulangan menggunakan for pada bahasa pemrograman Java
- Perulangan menggunakan while pada bahasa pemrograman Java
- Array pada bahasa pemrograman Java
- Method pada bahasa pemrograman Java
- Variabel instance, variabel class, dan variabel lokal
While melakukan eksekusi kode secara berulang berdasarkan nilai kebenaran ekspresi tertentu.
Struktur
Struktur perulangan menggunakan while adalah sebagai berikut.
while (ekspresi) { // Kode yang dieksekusi // jika ekspresi bernilai true }
Berikut adalah mekanisme kerjanya:
- Jika saat memasuki struktur while ekspresi bernilai true, maka kode di dalamnya akan dieksekusi.
- Setelah baris terakhir pada struktur dieksekusi, ekspresi akan dievaluasi lagi. Bila masih bernilai true, kode di dalamnya akan kembali dieksekusi.
- Hal ini terus berlangsung hingga ekspresi bernilai false.
- Jika saat memasuki struktur while ekspresi bernilai false, kode tidak akan dieksekusi sama sekali.
Sebagai alternatif perulangan menggunakan for
Struktur while dapat digunakan sebagaimana penggunaan struktur for. Cuplikan kode berikut menunjukkan beberapa contoh perulangan dengan struktur while. Contoh-contoh tersebut melakukan hal yang sama dengan contoh sebelumnya yang menggunakan struktur for. Jalankan langsung kode tersebut pada replit untuk lebih jelasnya.
int i = 0; while ( i < 4 ) { System.out.println(i); i++; } i = 1; while ( i <= 5 ) { System.out.println(i); i++; // ini sama artinya dengan i = i + 1 } i = 3; while (i<10) { System.out.println(i); i=i+3; // ini bisa diganti dengan i+=3 }
Berhenti sesuai input dari user
Keunggulan perulangan dengan while adalah dapat melakukan perulangan dalam jumlah yang belum pasti. Contoh pada cuplikan kode berikut adalah perulangan menggunakan while yang jumlah kali perulangannya bergantung pada input user. Kode dalam struktur akan terus dijalankan berulang selama user memilih memasukkan karakter ‘Y’ atau ‘y’. Jalankan langsung kode tersebut pada replit untuk lebih jelasnya.
String text = "Saya sedang belajar perulangan menggunakan while"; String lagi = "y"; while (lagi.equalsIgnoreCase("y")) { System.out.println(text); System.out.println("Lagi? (Y/T): "); lagi = System.console().readLine(); System.out.println(); } System.out.println("Perulangan dihentikan");
Berhenti karena tercapainya kondisi tertentu
Contoh lain penggunaan while adalah saat perulangan baru berhenti jika kondisi tertentu tercapai. Cuplikan kode berikut adalah sebuah permainan tanya jawab perkalian untuk dua bilangan di bawah 10. Pada permainan ini, user diminta menjawab soal berturut turut. Permainan dimenangkan bila user sudah menjawab 7 kali secara benar, dan kalah bila dua kali menjawab salah. Jalankan kode utuhnya pada replit, cobalah mengganti nilai beberapa variabel untuk lebih memahami kode program.
while ( benar < 7 && salah < 2 ) { bil1 = ThreadLocalRandom.current().nextInt(1, 10); bil2 = ThreadLocalRandom.current().nextInt(1, 10); kunci = bil1 * bil2; System.out.println(bil1+" x "+bil2+" = ? "); String input = System.console().readLine(); jawaban = Integer.parseInt(input); if (jawaban == kunci) { benar++; System.out.println("Benar : "+benar+" kali"); } else { salah++; System.out.println("Salah : "+salah+" kali"); } }
Infinite loop
Infinite loop atau disebut juga endless loop adalah perulangan yang dirancang tidak berhenti sama sekali, kecuali jika terjadi intervensi tertentu.
Infinite loop digunakan untuk biasanya untuk proses daemon (proses di belakang layar/background) atau services, pada kode yang menjalankan hardware/embedded devices, atau pada fungsi main sebuah game. Infinite loop menggunakan struktur while dibuat dengan menggunakan nilai true sebagai syarat perulangan. Contoh berikut menggunakan while dengan ekspresi bernilai true untuk mencetak “Hello” secara terus menerus tiap 5 detik. Jalankan kode tersebut di replit untuk lebih jelasnya.
while (true) { System.out.println("Hello ke-"+i); i++; try { TimeUnit.SECONDS.sleep(5); } catch (Exception x) { x.printStackTrace(); }
Semoga bermanfaat,
Salam