Try jako wyrażenie
Część sekcji Logika i przepływ danych ścieżki Kotlin w Coddy. Lekcja 53 z 63.
Blok try/catch może zwrócić wartość: ostatnie wyrażenie ukończonego bloku try lub pasującego bloku catch jest jego wynikiem. Blok finally wykonuje się później, aby przeprowadzić porządki, ale jego ostatnie wyrażenie nie zastępuje tej wartości. Oddziel porządki od obliczeń.
Wewnątrz main:
val value = try { "bad".toInt() } catch (error: NumberFormatException) { -1 }
println(value)Dopasowany blok catch zwraca minus jeden jako wynik wyrażenia.
Wyrażenie try przyjmuje wartość z ukończonej gałęzi try lub catch.
Wyzwanie
ŚredniUzupełnij parsedDouble o parametr text: String. Użyj wyrażenia try, aby sparsować tekst jako Int i podwoić jego wartość. Przechwyć NumberFormatException i użyj -1. Pomyślnie sparsowane dane wejściowe mieszczą się w zakresie od -1000 do 1000; mogą pojawić się także nieprawidłowe ciągi znaków oraz ciągi z wartościami spoza zakresu. Nie usuwaj białych znaków.
O ile powyżej nie określono bardziej rygorystycznych ograniczeń, kolekcje zawierają maksymalnie 100 elementów na każdym poziomie, a argumenty całkowite i całkowite wartości w kolekcjach mieszczą się w zakresie od -1000 do 1000. Tekst dostarczony do parsowania może zawierać nieprawidłowe reprezentacje lub wartości spoza zakresu, zgodnie z opisem.
Zwróć wartość typu Int. Zachowaj dostarczony kod wejścia/wyjścia. Odczytuje on argumenty skalarne, po jednym w wierszu; lista zaczyna się od liczby elementów, po której następują jej elementy, a mapa zaczyna się od liczby wpisów, po której następują kolejne klucze i wartości. Listy zagnieżdżone powtarzają format liczby elementów i elementów dla każdego wiersza. Dostarczona funkcja main wypisuje zwracaną wartość, a po niej jeden znak nowej linii. Listy używają standardowego formatu Kotlin z nawiasami kwadratowymi; nie wypisuj żadnych dodatkowych etykiet.
Spróbuj swoich sił
fun parsedDouble(text: String): Int {
// Wpisz tutaj swoje rozwiązanie.
return 0
}
fun main() {
val text = readLine().orEmpty()
println(parsedDouble(text))
}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
1Mapy, część 1
Tworzenie mapBezpieczne odczyty z mapAktualizowanie mapSprawdzanie kluczyPowtórka – Stock Desk4Kolekcje zagnieżdżone
Listy listPrzechodzenie przez wierszePodsumowania wierszySpłaszczanie list zagnieżdżonychPowtórka – rzędy miejsc7Potoki operacji na kolekcjach
Przekształcanie za pomocą mapFiltrowanie wartościTestowanie reguł kolekcjiAgregowanie za pomocą foldPodsumowanie — zatwierdzone sumy2Mapy, część 2
Iterowanie po elementach mapyKlucze i wartościMapy częstotliwościZagnieżdżone mapyPodsumowanie — raport częstotliwości5Projekt – książka kontaktów
Zapisywanie kontaktówWyszukiwanie kontaktów8Sortowanie i grupowanie
Sortowanie według kluczaŁączenie porównańGrupowanie wartościPrzyporządkowywanie według kluczaPodsumowanie – ranking długości11Obsługa błędów
Parsowanie bez wyjątkówPrzechwytywanie konkretnych błędówTry jako wyrażenieWalidacja za pomocą RequirePodsumowanie — walidowane wielkości3Zbiory i przynależność
Tworzenie zbiorówAktualizowanie zbiorówOperacje na zbiorachSprawdzanie podzbiorówPodsumowanie – goście wydarzenia6Wartości funkcji
Pisanie funkcji lambdaTypy funkcjiPrzekazywanie funkcjiPrzechwytywane zmiennePodsumowanie — konfigurowalny wynik9Zaawansowane sterowanie przebiegiem programu
Klauzule ochronnePrzerywanie pętli z etykietąKontynuowanie pętli z etykietąFunkcje rekurencyjnePodsumowanie — pierwszy poprawny wierszPoćwicz samodzielnie: Edytor online Kotlin