Menu
Coddy logo textTech

View All Expenses

Part of the Fundamentals section of Coddy's Ruby journey. Lesson 82 of 88.

challenge icon

Challenge

Easy

Build upon your expense tracker by adding the "View Expenses" functionality.

Your program should:

  1. Initialize an empty array called expenses
  2. Create a loop do that displays the menu and reads user input
  3. When the user enters "1", prompt for the expense name and amount, create a hash with :name and :amount keys, add it to the expenses array, and print Expense added!
  4. When the user enters "2", display all expenses or a message if none exist
  5. When the user enters "5", print Goodbye! and exit the loop

The menu should display exactly as before:


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

When option "2" is selected:

  • If there are no expenses, print: No expenses recorded yet.
  • If there are expenses, first print a blank line followed by --- Your Expenses ---, then print each expense in the format: Name: $Amount

For example, if the inputs are 2, then 5 (viewing when empty), the output should be:


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

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

If the inputs are 1, Coffee, 4.5, 1, Lunch, 12.0, 2, then 5, the output should be:


--- 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: Expense name: Amount: Expense added!

--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: 
--- Your Expenses ---
Coffee: $4.5
Lunch: $12.0

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

Try it yourself

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.push({name: name, amount: amount})
    puts "Expense added!"
    puts ""
  elsif choice == "5"
    puts "Goodbye!"
    break
  end
end

All lessons in Fundamentals

Practice on your own: Online Ruby compiler