Fehlerbehandlung
Teil des Abschnitts Grundlagen der Ruby-Journey von Coddy — Lektion 85 von 88.
Aufgabe
EinfachVervollständigen Sie den Daily Expense Tracker, indem Sie eine Fehlerbehandlung für ungültige Menüoptionen hinzufügen.
Ihr Programm sollte:
- Ein leeres Array namens
expensesinitialisieren - Einen
loop doerstellen, der das Menü anzeigt und Benutzereingaben liest - Wenn der Benutzer
"1"eingibt, nach dem Namen der Ausgabe und dem Betrag fragen, einen Hash mit den Schlüsseln:nameund:amounterstellen, diesen zumexpensesArray hinzufügen undExpense added!ausgeben - Wenn der Benutzer
"2"eingibt, alle Ausgaben anzeigen oder eine Nachricht, falls keine vorhanden sind - Wenn der Benutzer
"3"eingibt, die Summe und den Durchschnitt aller Ausgaben berechnen und anzeigen, oder eine Nachricht, falls keine vorhanden sind - Wenn der Benutzer
"4"eingibt, alle Ausgaben aus dem Array löschen undAll expenses cleared!ausgeben - Wenn der Benutzer
"5"eingibt,Goodbye!ausgeben und die Schleife beenden - Für jede andere Eingabe Folgendes ausgeben:
Invalid option. Please try again.
Das Menü sollte genau wie zuvor angezeigt werden:
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Wenn die Eingaben beispielsweise 7, abc und dann 5 sind (zwei ungültige Optionen, dann Beenden), sollte die Ausgabe wie folgt aussehen:
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Invalid option. Please try again.
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Invalid option. Please try again.
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Goodbye!Wenn die Eingaben 1, Coffee, 4.5, 6, 2 und dann 5 sind (Ausgabe hinzufügen, ungültige Option, Anzeigen, Beenden), sollte die Ausgabe wie folgt aussehen:
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Expense name: Amount: Expense added!
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Invalid option. Please try again.
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option:
--- Your Expenses ---
Coffee: $4.5
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Goodbye!Probier es selbst
expenses = []
loop do
puts "--- Expense Tracker ---"
puts "1. Add Expense"
puts "2. View Expenses"
puts "3. Total & Average"
puts "4. Clear All"
puts "5. Exit"
print "Choose an option: "
choice = gets.chomp
if choice == "1"
print "Expense name: "
name = gets.chomp
print "Amount: "
amount = gets.chomp.to_f
expenses << { name: name, amount: amount }
puts "Expense added!"
elsif choice == "2"
if expenses.empty?
puts "No expenses recorded yet."
else
expenses.each do |expense|
puts "#{expense[:name]}: $#{expense[:amount]}"
end
end
elsif choice == "3"
if expenses.empty?
puts "No expenses to calculate."
else
total = expenses.sum { |expense| expense[:amount] }
average = total / expenses.length
puts "Total: $#{total}"
puts "Average: $#{average}"
end
elsif choice == "4"
expenses.clear
puts "All expenses cleared!"
elsif choice == "5"
puts "Goodbye!"
break
end
puts ""
endAlle Lektionen in Grundlagen
4Operatoren Teil 2
Logische Operatoren Teil 1Logische Operatoren Teil 2Wiederholung – Einfache LogikLogische Operatoren Teil 3Logische Operatoren Teil 47Rechnungs-Splitter
WillkommensnachrichtBenutzereingaben abfragen10FizzBuzz mit Twist
SpielübersichtDie FizzBuzz-Methode13Arrays für Fortgeschrittene
Array Slicing mit BereichenArray Slicing mit IndizesArray-OperatorenInclude? Methode2Variablen und Datentypen
Zahlen und VariablenDatentyp StringDatentyp BooleanDatentyp SymbolDatentypen prüfenBenennungskonventionenZusammenfassung – Erstellung von Variablen5Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher TaschenrechnerVerschachtelte If - Else-AnweisungenUnless-Anweisung8Schleifen
For-Schleife mit RangesWhile-SchleifeBreakNextRückblick - FakultätTimes-SchleifeUntil-SchleifeVerschachtelte SchleifenRückblick - Dynamische Eingabe3Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorArithmetische AbkürzungenWiederholung – Einfache MathematikVergleichsoperatoren6Grundlagen Ein- und Ausgabe
Ausgabe mit putsAusgabe mit print und pAusgabe mit VariablenEingabe mit getsChomp-MethodeTypumwandlungWiederholung - AltersrechnerWiederholung - Wahr oder Falsch9Methoden
Eine Methode definierenMethodenparameterRückgabewerteRückblick - Sigma-MethodeRückblick - ValidierungsmethodeStandard-Parameterwerte15Täglicher Ausgaben-Tracker
ProjektübersichtProgramm beenden