Menu
Coddy logo textTech

Manejo de errores

Parte de la sección Fundamentos del Journey de Ruby de Coddy. Lección 85 de 88.

challenge icon

Desafío

Fácil

Completa el Rastreador de Gastos Diarios agregando el manejo de errores para opciones de menú inválidas.

Tu programa debe:

  1. Inicializar un array vacío llamado expenses
  2. Crear un loop do que muestre el menú y lea la entrada del usuario
  3. Cuando el usuario ingrese "1", solicitar el nombre y el monto del gasto, crear un hash con las llaves :name y :amount, agregarlo al array expenses e imprimir Expense added!
  4. Cuando el usuario ingrese "2", mostrar todos los gastos o un mensaje si no existe ninguno
  5. Cuando el usuario ingrese "3", calcular y mostrar el total y el promedio de todos los gastos, o un mensaje si no existe ninguno
  6. Cuando el usuario ingrese "4", borrar todos los gastos del array e imprimir All expenses cleared!
  7. Cuando el usuario ingrese "5", imprimir Goodbye! y salir del bucle
  8. Para cualquier otra entrada, imprimir: Invalid option. Please try again.

El menú debe mostrarse exactamente como antes:


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

Por ejemplo, si las entradas son 7, abc, luego 5 (dos opciones inválidas, luego salir), la salida debe ser:


--- 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 las entradas son 1, Coffee, 4.5, 6, 2, luego 5 (agregar gasto, opción inválida, ver, salir), la salida debe ser:


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

Pruébalo tú mismo

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

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Ruby online