break dan continue adalah dua keyword yang mengatur alur di dalam loop. break segera menghentikan loop dan melanjutkan eksekusi ke baris setelah loop, sementara continue melewatkan sisa body pada iterasi saat ini dan melompat ke iterasi berikutnya. Kedua keyword ini bekerja pada for, while, dan do-while. Pada chapter ini kita akan melihat penerapan break dan continue pada berbagai jenis loop, serta pola pencarian elemen dengan break.
break: Keluar dari Loop #
break menghentikan loop secara langsung tanpa menyelesaikan iterasi yang sedang berjalan. Efeknya: eksekusi melompat ke baris kode tepat setelah loop.
fun main() {
// break: keluar dari loop
println("Contoh break (berhenti ketika menemukan 7):")
for (i in 1..10) {
if (i == 7) {
println("Berhenti pada i=$i")
break
}
print("$i ")
}
println()
// continue: lewati sisa body, lanjut ke iterasi berikutnya
println("Contoh continue (lewati kelipatan 3):")
for (i in 1..10) {
if (i % 3 == 0) {
continue
}
print("$i ")
}
println()
// break pada while
println("break pada while (cari elemen > 50):")
val data = listOf(12, 30, 8, 55, 22, 90, 4)
var indeks = 0
var ditemukan = -1
while (indeks < data.size) {
if (data[indeks] > 50) {
ditemukan = indeks
break
}
indeks++
}
println("Indeks pertama dengan nilai > 50: $ditemukan")
// continue pada while untuk melewatkan nilai genap
println("continue pada while (cetak hanya ganjil):")
var angka = 0
while (angka < 10) {
angka++
if (angka % 2 == 0) {
continue
}
print("$angka ")
}
println()
// break pada iterasi string
println("break pada iterasi string (berhenti pada spasi):")
val kalimat = "Halo Dunia Kotlin"
var hasil = StringBuilder()
for (ch in kalimat) {
if (ch == ' ') {
break
}
hasil.append(ch)
}
println("Potongan kata pertama: '$hasil'")
}Output yang Dihasilkan:
Contoh break (berhenti ketika menemukan 7):
1 2 3 4 5 6 Berhenti pada i=7
Contoh continue (lewati kelipatan 3):
1 2 4 5 7 8 10
break pada while (cari elemen > 50):
Indeks pertama dengan nilai > 50: 3
continue pada while (cetak hanya ganjil):
1 3 5 7 9
break pada iterasi string (berhenti pada spasi):
Potongan kata pertama: 'Halo'Mari kita bedah baris-baris penting:
if (i == 7) { println(...); break }: ketikaimencapai 7,breakmenghentikan loop. Iterasi 8, 9, 10 tidak dijalankan.if (i % 3 == 0) { continue }:continuemelompat ke iterasi berikutnya, melewatiprint("$i "). Kelipatan 3 (3, 6, 9) tidak tercetak.- Pencarian dengan
breakpadawhile: ketikadata[indeks] > 50,ditemukandiisi danbreakmenghentikan loop. Tanpabreak, loop akan terus berjalan sampai akhir list meskipun elemen sudah ditemukan. continuepadawhiledengan kenaikan counter: perhatikan bahwaangka++ditempatkan sebelumcontinue. Bila ditempatkan setelahnya,continueakan melewati kenaikan dan menyebabkan infinite loop.breakpada iterasi string: saat karakter spasi ditemukan,breakmenghentikan iterasi.StringBuildermenyimpan karakter yang sudah dikumpulkan.
Perbedaan break dan continue #
| Keyword | Efek | Posisi loop berikutnya |
|---|---|---|
break | Menghentikan loop sepenuhnya | Keluar dari loop |
continue | Melewati sisa body iterasi saat ini | Lanjut ke iterasi berikutnya |
Jebakan continue pada while #
Pada for, kenaikan counter biasanya ditangani oleh iterator (mis. for (i in 1..10)). Pada while, kenaikan counter harus dilakukan manual dalam body. Bila continue diletakkan sebelum kenaikan counter, counter tidak akan bertambah dan loop berjalan tanpa henti.
break untuk Pencarian #
Pencarian elemen pertama yang memenuhi kondisi adalah penerapan klasik break. Loop berjalan sampai kondisi terpenuhi, lalu break menghentikan iterasi lebih lanjut. Pola ini lebih efisien daripada mengiterasi seluruh list karena berhenti begitu elemen ditemukan.
continue untuk Filtering Inline #
continue berguna ketika kita ingin melewatkan elemen tertentu tanpa menghentikan loop sepenuhnya. Contoh: cetak hanya angka ganjil, atau lewati baris kosong pada pemrosesan file teks.
Tidak Bekerja pada Nested Loop Tanpa Label #
break dan continue hanya memengaruhi loop terdalam tempat keduanya berada. Untuk loop bersarang, gunakan labeled break/continue yang akan dibahas pada chapter labeled-break-dan-continue.
Referensi Lanjutan #
- Returns and jumps
— panduan resmi
breakdancontinuepada loop - Control flow
— konteks
breakdancontinuedalam panduan control flow
Setelah memahami break dan continue dasar, chapter berikutnya akan memperluas kemampuan ini dengan label yang memungkinkan keluar dari loop luar secara langsung.