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.

kotlin
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:

text
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:

  1. if (i == 7) { println(...); break }: ketika i mencapai 7, break menghentikan loop. Iterasi 8, 9, 10 tidak dijalankan.
  2. if (i % 3 == 0) { continue }: continue melompat ke iterasi berikutnya, melewati print("$i "). Kelipatan 3 (3, 6, 9) tidak tercetak.
  3. Pencarian dengan break pada while: ketika data[indeks] > 50, ditemukan diisi dan break menghentikan loop. Tanpa break, loop akan terus berjalan sampai akhir list meskipun elemen sudah ditemukan.
  4. continue pada while dengan kenaikan counter: perhatikan bahwa angka++ ditempatkan sebelum continue. Bila ditempatkan setelahnya, continue akan melewati kenaikan dan menyebabkan infinite loop.
  5. break pada iterasi string: saat karakter spasi ditemukan, break menghentikan iterasi. StringBuilder menyimpan karakter yang sudah dikumpulkan.

Perbedaan break dan continue #

KeywordEfekPosisi loop berikutnya
breakMenghentikan loop sepenuhnyaKeluar dari loop
continueMelewati sisa body iterasi saat iniLanjut 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 #

Setelah memahami break dan continue dasar, chapter berikutnya akan memperluas kemampuan ini dengan label yang memungkinkan keluar dari loop luar secara langsung.