Menu
Coddy logo textTech

에러 핸들링

Coddy Ruby 여정의 기초 섹션에 포함된 레슨 — 88개 중 85번째.

challenge icon

챌린지

쉬움

잘못된 메뉴 옵션에 대한 에러 처리를 추가하여 일일 지출 추적기(Daily Expense Tracker)를 완성하세요.

프로그램은 다음을 수행해야 합니다:

  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

기초의 모든 레슨