Menu
Coddy logo textTech

Fehlerbehandlung

Teil des Abschnitts Grundlagen der Kotlin-Journey von Coddy. Lektion 90 von 93.

challenge icon

Aufgabe

Mittel

In der vorherigen Lektion hast du die Funktionalität „Clear All“ implementiert. Füge nun eine Eingabevalidierung hinzu, um Fälle zu behandeln, in denen der Benutzer einen ungültigen Ausgabenbetrag eingibt.

Ändere dein Programm so, dass es beim Hinzufügen von Ausgaben (Option 1) Fehler behandelt:

  • Wenn der Benutzer einen Ausgabenbetrag eingibt, verwende toDoubleOrNull(), um die Eingabe sicher zu konvertieren
  • Wenn die Konvertierung null zurückgibt (ungültige Eingabe), gib Invalid amount! aus, anstatt die Ausgabe hinzuzufügen
  • Wenn die Konvertierung erfolgreich ist, füge die Ausgabe hinzu und gib wie zuvor Expense added! aus

Alle anderen Optionen sollten weiterhin wie zuvor funktionieren:

  • Option 1: Ausgabe hinzufügen (mit Validierung)
  • Option 2: Alle Ausgaben anzeigen
  • Option 3: Gesamtbetrag und Durchschnitt
  • Option 4: Alle Ausgaben löschen
  • Option 5: Goodbye! ausgeben und beenden
  • Ungültige Optionen: Invalid option ausgeben

Eingabeformat:

Menüauswahlen und Ausgabenbeträge als Zeichenketten.

Ausgabeformat:

Das Menü, gefolgt von der passenden Antwort für jede Aktion.

Beispiel:

Wenn die Eingaben 1, abc, 1, 25.0, 1, hello, 2 und 5 sind, sollte die Ausgabe wie folgt aussehen:

--- 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!

Hinweis: Die Methode toDoubleOrNull() gibt null zurück, wenn die Zeichenkette nicht in einen Double-Wert konvertiert werden kann, anstatt einen Absturz zu verursachen. Verwende den Elvis-Operator oder eine Nullprüfung, um diesen Fall zu behandeln.

Probier es selbst

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")
        }
    }
}

Alle Lektionen in Grundlagen

Übe selbstständig: Kotlin-Playground