Menu
CoddyTech

全部清除

本课属于 Coddy Ruby 学习旅程的“基础知识”单元。第 84 课,共 88 课。

challenge icon

挑战

简单

在现有的费用追踪器基础上,添加“Clear All”功能。

你的程序应:

  1. 初始化一个名为 expenses 的空数组
  2. 创建一个 loop do,用于显示菜单并读取用户输入
  3. 当用户输入 "1" 时,提示用户输入费用名称和金额,创建一个包含 :name 和 :amount 键的哈希,将其添加到 expenses 数组中,并打印 Expense added!
  4. 当用户输入 "2" 时,显示所有费用;如果没有费用,则显示一条提示信息
  5. 当用户输入 "3" 时,计算并显示所有费用的总额和平均值;如果没有费用,则显示一条提示信息
  6. 当用户输入 "4" 时,清除数组中的所有费用,并打印确认信息
  7. 当用户输入 "5" 时,打印 Goodbye! 并退出循环

菜单应与之前完全一致:


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

选择选项 "4" 时,对 expenses 数组使用 clear 方法,并打印:All expenses cleared!

例如,如果输入依次为 1、Coffee、5.0、4、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: All expenses cleared!

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

如果输入依次为 1、Lunch、12.0、1、Dinner、25.0、3、4、3,然后输入 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: Expense name: Amount: Expense added!

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

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

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

--- 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
    expense = { name: name, amount: amount }
    expenses << expense
    puts "Expense added!"
  elsif choice == "2"
    if expenses.empty?
      puts "No expenses recorded."
    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 = 0
      expenses.each do |expense|
        total += expense[:amount]
      end
      average = total / expenses.length
      puts "Total: $#{total}"
      puts "Average: $#{average}"
    end
  elsif choice == "5"
    puts "Goodbye!"
    break
  end
  
  puts ""
end

基础知识中的所有课

自己练习: Ruby 在线编译器