Obsługa błędów
Część sekcji Podstawy ścieżki Swift w Coddy. Lekcja 83 z 86.
Wyzwanie
ŁatwyW poprzedniej lekcji zaimplementowano funkcję „Clear all expenses”. Teraz dodaj obsługę błędów dla nieprawidłowych danych wejściowych w całym menedżerze wydatków.
Zmodyfikuj swój kod, aby prawidłowo obsługiwał nieprawidłowe dane wejściowe:
- Gdy użytkownik wprowadzi nieprawidłową opcję menu (cokolwiek innego niż
"1","2","3","4"lub"5"), wyświetlInvalid option. Please try again. - Podczas dodawania wydatku (opcja
"1"), jeśli nie można przekonwertować danych wejściowych na prawidłową wartość typuDouble, wyświetlInvalid amount. Expense not added.i wróć do menu bez dodawania czegokolwiek do tablicy - Cała pozostała funkcjonalność powinna nadal działać jak wcześniej
Oczekiwane działanie:
- Nieprawidłowe opcje menu wyświetlają komunikat o błędzie, a następnie ponownie pokazują menu
- Nieprawidłowe kwoty wydatków wyświetlają komunikat o błędzie i powodują powrót do menu
- Prawidłowe dane wejściowe nadal działają tak jak w poprzednich lekcjach
Przykładowa interakcja:
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
7
Invalid option. Please try again.
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
1
Enter expense amount:
abc
Invalid amount. Expense not added.
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
1
Enter expense amount:
25.0
Expense added!
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
2
Your expenses:
- $25.0
1. Add expense
2. View all expenses
3. Show total and average
4. Clear all expenses
5. Exit
5
Goodbye!Spróbuj swoich sił
// Daily Expense Tracker - Menu Display
var expenses: [Double] = []
while true {
// TODO: Write your code below to print the menu options
// Each option should be on its own line with the format: "number. option text"
print("1. Add expense")
print("2. View all expenses")
print("3. Show total and average")
print("4. Clear all expenses")
print("5. Exit")
let choice = readLine()
if choice == "1" {
print("Enter expense amount:")
if let input = readLine(), let amount = Double(input) {
expenses.append(amount)
print("Expense added!")
}
} else if choice == "2" {
if expenses.isEmpty {
print("No expenses recorded.")
} else {
print("Your expenses:")
for expense in expenses {
print("- $\(expense)")
}
}
} else if choice == "3" {
if expenses.isEmpty {
print("No expenses to calculate.")
} else {
let total = expenses.reduce(0, +)
let average = total / Double(expenses.count)
print("Total: $\(total)")
print("Average: $\(average)")
}
} else if choice == "4" {
expenses.removeAll()
print("All expenses cleared!")
} else if choice == "5" {
print("Goodbye!")
break
} else {
print("Coming soon...")
}
}Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneOperator moduloPrzypisanie złożonePodsumowanie — prosta matematykaOperatory porównania7Podstawowe wejście/wyjście
Funkcja printInterpolacja ciągów znakówWejście ReadLineKonwersja typówPowtórka – do 120Powtórka – prawda czy fałsz10Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneEtykiety argumentówPowtórka – funkcja SigmaPowtórka – funkcja walidującaWartości domyślne2Zmienne
let vs varAdnotacje typówLiczbyŁańcuch znakówWartość logicznaKonwencje nazewnictwaPodsumowanie – inicjalizacja zmiennych5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Powtórka – prosta logikaOperatory logiczne, część 3Operator trójargumentowy8Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych wejściowych11FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz3Typy opcjonalne
Czym są typy opcjonalneRozpakowywanie za pomocą if letGuard letOperator nil-coalescingPodsumowanie — bezpieczne rozpakowywanie6Podejmowanie decyzji
Instrukcja ifIf - ElsePowtórka – prosty kalkulatorInstrukcja switchSwitch z zakresami9Pętle
Pętla for-inPętla whilePętla repeat-whileInstrukcja breakInstrukcja continuePowtórzenie – silniaZakresy w pętlachPętla zagnieżdżonaPowtórzenie – dynamiczne dane wejściowe12Podstawy tablic
Deklarowanie tablicyDostęp do elementówModyfikowanie tablicMetody tablicPowtórka – lista produktówPowtórka – odwrócona tablicaKrotki15Codzienny rejestr wydatków
Omówienie projektuZakończenie programuPoćwicz samodzielnie: Edytor online Swift