Fehlerbehandlung
Teil des Abschnitts Grundlagen der Kotlin-Journey von Coddy. Lektion 90 von 93.
Aufgabe
MittelIn 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
nullzurückgibt (ungültige Eingabe), gibInvalid 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 optionausgeben
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
4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorErweiterte ZuweisungVergleichsoperatorenRückblick – Einfache Mathematik7Grundlegende Ein-/Ausgabe
println-FunktionString-VorlagenReadLine-EingabeTypkonvertierungWiederholung – Jahre bis zur RenteWiederholung – Wahr oder falsch10Funktionen
Eine Funktion deklarierenParameter und ArgumenteRückgabewerteBenannte ArgumenteStandardwerteFunktionen mit einem AusdruckRückblick – Sigma-FunktionRückblick – Validierungsfunktion2Variablen
Val vs VarTypinferenzZahlenStringBooleanNamenskonventionenRückblick – Variablen initialisieren5Operatoren Teil 2
Logische Operatoren Teil 1Logische Operatoren Teil 2Logische Operatoren Teil 3Ternär mit If-AusdruckWiederholung – Einfache Logik8Rechner zum Aufteilen der Rechnung
WillkommensnachrichtEingaben erfassen11FizzBuzz mit einer Wendung
SpielübersichtDie FizzBuzz-Funktion3Nullbarkeit
Was ist Null-Sicherheit?Nullable-TypenOperator für sicheren AufrufElvis-OperatorGrundlagen der FunktionsaufgabeAssertion auf Nicht-NullRückblick – Sicherer Zugriff6Entscheidungen treffen
If-AnweisungIf - ElseIf als AusdruckWhen-AusdruckWhen mit BereichenRückblick - Einfacher Taschenrechner9Schleifen
For-SchleifeWhile-SchleifeDo-While-SchleifeBreakContinueBereiche in SchleifenVerschachtelte SchleifeRückblick – FakultätRückblick – Dynamische Eingabe12Grundlagen von Listen
List vs. MutableListAuf Elemente zugreifenListen verändernListenmethodenPaar und TripleWiederholung – ProduktlisteWiederholung – Umgekehrte Liste15Täglicher Ausgaben-Tracker
ProjektübersichtProgramm beendenÜbe selbstständig: Kotlin-Playground