Menu
Coddy logo textTech

Obsługa błędów

Część sekcji Podstawy ścieżki Kotlin w Coddy. Lekcja 90 z 93.

challenge icon

Wyzwanie

Średni

W poprzedniej lekcji zaimplementowano funkcję „Wyczyść wszystko”. Teraz dodaj walidację danych wejściowych, aby obsłużyć przypadki, gdy użytkownik wprowadzi nieprawidłową kwotę wydatku.

Zmodyfikuj program, aby obsługiwał błędy podczas dodawania wydatków (opcja 1):

  • Gdy użytkownik wprowadzi kwotę wydatku, użyj toDoubleOrNull(), aby bezpiecznie przekonwertować dane wejściowe
  • Jeśli konwersja zwróci null (nieprawidłowe dane wejściowe), wyświetl Invalid amount! zamiast dodawać wydatek
  • Jeśli konwersja się powiedzie, dodaj wydatek i wyświetl Expense added!, tak jak wcześniej

Wszystkie pozostałe opcje powinny nadal działać tak jak wcześniej:

  • Opcja 1: Dodaj wydatek (z walidacją)
  • Opcja 2: Wyświetl wszystkie wydatki
  • Opcja 3: Suma i średnia
  • Opcja 4: Wyczyść wszystkie wydatki
  • Opcja 5: Wyświetl Goodbye! i zakończ
  • Nieprawidłowe opcje: Wyświetl Invalid option

Format danych wejściowych:

Wybory z menu i kwoty wydatków jako ciągi znaków.

Format danych wyjściowych:

Menu, a po nim odpowiednia odpowiedź dla każdej czynności.

Przykład:

Jeśli dane wejściowe to 1, abc, 1, 25.0, 1, hello, 2 i 5, dane wyjściowe powinny wyglądać następująco:

--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Enter expense amount:
Invalid amount!
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Enter expense amount:
Expense added!
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Enter expense amount:
Invalid amount!
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Your expenses:
- $25.0
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Goodbye!

Podpowiedź: Metoda toDoubleOrNull() zwraca null, jeśli ciągu znaków nie można przekonwertować na wartość typu Double, zamiast powodować awarię. Użyj operatora Elvis lub sprawdzenia wartości null, aby obsłużyć ten przypadek.

Spróbuj swoich sił

fun main() {
    val expenses = mutableListOf<Double>()
    
    while (true) {
        println("--- Expense Tracker ---")
        println("1. Add Expense")
        println("2. View All Expenses")
        println("3. Total and Average")
        println("4. Clear All")
        println("5. Exit")
        println("Choose an option:")
        
        val choice = readLine()
        
        if (choice == "1") {
            println("Enter expense amount:")
            val amount = readLine()!!.toDouble()
            expenses.add(amount)
            println("Expense added!")
        } else if (choice == "2") {
            if (expenses.isEmpty()) {
                println("No expenses recorded.")
            } else {
                println("Your expenses:")
                for (expense in expenses) {
                    println("- \$$expense")
                }
            }
        } else if (choice == "3") {
            if (expenses.isEmpty()) {
                println("No expenses recorded.")
            } else {
                val total = expenses.sum()
                val average = total / expenses.size
                println("Total: \$$total")
                println("Average: \$$average")
            }
        } else if (choice == "4") {
            expenses.clear()
            println("All expenses cleared!")
        } else if (choice == "5") {
            println("Goodbye!")
            break
        } else {
            println("Invalid option")
        }
    }
}

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Kotlin