Menu
Coddy logo textTech

Beschriftete Schleifen abbrechen

Teil des Abschnitts Logik & Ablauf der Kotlin-Journey von Coddy. Lektion 42 von 63.

Ein gewöhnlicher break beendet nur die nächstgelegene Schleife. Gib einer äußeren Schleife ein Label wie search@ und verwende dann break@search innerhalb einer verschachtelten Schleife, um die gesamte Suche zu verlassen, sobald ihr Ziel erreicht ist. Ein Label gehört zu der Schleife, die unmittelbar darauf folgt.

Innerhalb von main:

var found = -1
search@ for (row in listOf(listOf(1, 4), listOf(6, 8))) {
    for (value in row) {
        if (value % 2 == 0) {
            found = value
            break@search
        }
    }
}
println(found)

Vier ist der erste gerade Wert in der Reihenfolge der Zeilen, und die markierte break-Anweisung überspringt die verbleibenden Zeilen.

Eine markierte break-Anweisung beendet die ausdrücklich markierte Schleife einschließlich ihrer verschachtelten Arbeit.

challenge icon

Aufgabe

Mittel

Vervollständige firstEven mit den Parametern grid: List<List<Int>>. Finde den ersten geraden Wert in Zeilenreihenfolge und verwende ein markiertes break, um beide Schleifen zu beenden. Gib -1 zurück, wenn es keine Übereinstimmung gibt. Null und negative gerade Werte zählen.

Sofern oben keine strengeren Grenzen angegeben sind, enthalten Sammlungen auf jeder Ebene höchstens 100 Elemente, und ganzzahlige Argumente sowie ganzzahlige Sammlungswerte liegen zwischen -1000 und 1000. Zum Parsen bereitgestellter Text kann ungültige oder außerhalb des gültigen Bereichs liegende Darstellungen enthalten, wie beschrieben.

Gib einen Wert vom Typ Int zurück. Behalte den bereitgestellten Eingabe-/Ausgabecode bei. Er liest skalare Argumente jeweils in einer eigenen Zeile ein; eine Liste beginnt mit ihrer Anzahl, gefolgt von ihren Elementen, und eine Map beginnt mit der Anzahl ihrer Einträge, gefolgt von jedem Schlüssel und Wert. Verschachtelte Listen wiederholen für jede Zeile das Format aus Anzahl und Elementen. Das bereitgestellte main gibt den Rückgabewert gefolgt von genau einem Zeilenumbruch aus. Listen verwenden das standardmäßige Klammerformat von Kotlin; gib keine zusätzlichen Bezeichnungen aus.

Probier es selbst

fun firstEven(grid: List<List<Int>>): Int {
    // Schreibe deine Lösung hier.
    return 0
}
fun main() {
    val gridCount = readln().toInt()
    val grid = mutableListOf<List<Int>>()
    for (i0 in 0 until gridCount) {
        val gridItemCount = readln().toInt()
        val gridItem = mutableListOf<Int>()
        for (i1 in 0 until gridItemCount) {
            val gridItemItem = readln().toInt()
            gridItem.add(gridItemItem)
        }
        grid.add(gridItem)
    }
    println(firstEven(grid))
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Kotlin-Playground