Menu
Coddy logo textTech

Walidacja za pomocą Require

Część sekcji Logika i przepływ danych ścieżki Kotlin w Coddy. Lekcja 54 z 63.

require(condition) sprawdza warunek dotyczący argumentu funkcji. Jeśli warunek ma wartość false, zgłasza IllegalArgumentException. Końcowe wyrażenie lambda może dostarczyć komunikat o błędzie. Przechwycenie tego oczekiwanego błędu w miejscu wywołania pozwala przekształcić nieprawidłowe dane wejściowe w określony wynik.

fun ticketCost(count: Int): Int {
    require(count >= 0) { "count must be nonnegative" }
    return count * 5
}

Wewnątrz main:

try {
    println(ticketCost(-2))
} catch (error: IllegalArgumentException) {
    println("invalid")
}

Niespełniony warunek dotyczący argumentu powoduje wyjątek, zanim zostanie obliczony koszt.

require zgłasza IllegalArgumentException, gdy jego warunek ma wartość false.

challenge icon

Wyzwanie

Średni

Uzupełnij validatedCost, używając parametrów count: Int. Użyj dostarczonej funkcji pomocniczej cost, która wymaga nieujemnej wartości count. W przypadku powodzenia zwróć koszt jako ciąg znaków, a jeśli zostanie zgłoszony wyjątek IllegalArgumentException, zwróć invalid. count mieści się w zakresie od -1000 do 1000.

Jeśli powyżej nie podano bardziej rygorystycznych ograniczeń, kolekcje zawierają maksymalnie 100 elementów na każdym poziomie, a argumenty typu integer i wartości typu integer w kolekcjach mieszczą się w zakresie od -1000 do 1000. Tekst przekazany do parsowania może zawierać nieprawidłowe lub wykraczające poza zakres reprezentacje, zgodnie z opisem.

Zwróć wartość typu String. Pozostaw dostarczony kod wejścia/wyjścia. Odczytuje argumenty skalarne po jednym w wierszu; lista zaczyna się od swojej liczby elementów, po której następują te elementy, a mapa zaczyna się od liczby wpisów, po której następują kolejno każdy klucz i wartość. Zagnieżdżone listy powtarzają format liczby elementów i elementów dla każdego wiersza. Dostarczona funkcja main wypisuje zwróconą wartość, a następnie jeden znak nowej linii. Listy używają standardowego formatu Kotlin z nawiasami kwadratowymi; nie wypisuj dodatkowych etykiet.

Spróbuj swoich sił

fun cost(count: Int): Int {
    require(count >= 0) { "count must be nonnegative" }
    return count * 5
}
fun validatedCost(count: Int): String {
    // Napisz tutaj swoje rozwiązanie.
    return ""
}
fun main() {
    val count = readln().toInt()
    println(validatedCost(count))
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ danych

Poćwicz samodzielnie: Edytor online Kotlin