Menu
Coddy logo textTech

Обработка ошибок

Часть раздела Основы путешествия по Ruby на Coddy — урок 85 из 88.

challenge icon

Задание

Легко

Завершите создание ежедневного трекера расходов, добавив обработку ошибок для неверных пунктов меню.

Ваша программа должна:

  1. Инициализировать пустой массив с именем expenses
  2. Создать цикл loop do, который отображает меню и считывает ввод пользователя
  3. Когда пользователь вводит "1", запросить название расхода и сумму, создать хэш с ключами :name и :amount, добавить его в массив expenses и вывести Expense added!
  4. Когда пользователь вводит "2", вывести все расходы или сообщение, если они отсутствуют
  5. Когда пользователь вводит "3", рассчитать и вывести общую сумму и среднее значение всех расходов или сообщение, если они отсутствуют
  6. Когда пользователь вводит "4", удалить все расходы из массива и вывести All expenses cleared!
  7. Когда пользователь вводит "5", вывести Goodbye! и выйти из цикла
  8. Для любого другого ввода вывести: Invalid option. Please try again.

Меню должно отображаться точно так же, как и раньше:


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

Например, если введены значения 7, abc, а затем 5 (два неверных варианта, затем выход), вывод должен быть следующим:


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

Если введены значения 1, Coffee, 4.5, 6, 2, а затем 5 (добавление расхода, неверный вариант, просмотр, выход), вывод должен быть следующим:


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

Попробуйте сами

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

Все уроки раздела Основы