Menu
Coddy logo textTech

Gestion des erreurs

Fait partie de la section Fondamentaux du Journey Ruby de Coddy. Leçon 85 sur 88.

challenge icon

Défi

Facile

Complétez le suivi quotidien des dépenses en ajoutant la gestion des erreurs pour les options de menu invalides.

Votre programme doit :

  1. Initialiser un tableau vide appelé expenses
  2. Créer une loop do qui affiche le menu et lit la saisie de l’utilisateur
  3. Lorsque l’utilisateur saisit "1", demander le nom et le montant de la dépense, créer un hachage avec les clés :name et :amount, l’ajouter au tableau expenses et afficher Expense added!
  4. Lorsque l’utilisateur saisit "2", afficher toutes les dépenses ou un message si aucune n’existe
  5. Lorsque l’utilisateur saisit "3", calculer et afficher le total et la moyenne de toutes les dépenses, ou un message si aucune n’existe
  6. Lorsque l’utilisateur saisit "4", supprimer toutes les dépenses du tableau et afficher All expenses cleared!
  7. Lorsque l’utilisateur saisit "5", afficher Goodbye! et quitter la boucle
  8. Pour toute autre saisie, afficher : Invalid option. Please try again.

Le menu doit s’afficher exactement comme précédemment :


--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: 

Par exemple, si les saisies sont 7, abc, puis 5 (deux options invalides, puis la sortie), la sortie doit être :


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

Si les saisies sont 1, Coffee, 4.5, 6, 2, puis 5 (ajout d’une dépense, option invalide, affichage, sortie), la sortie doit être :


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

Essayez vous-même

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 ""
end

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Compilateur Ruby en ligne