Menu
CoddyTech

Penanganan error

Termasuk bagian Dasar-Dasar dalam perjalanan Ruby di Coddy. Pelajaran 85 dari 88.

challenge icon

Tantangan

Mudah

Lengkapi Pelacak Pengeluaran Harian dengan menambahkan penanganan error untuk opsi menu yang tidak valid.

Programmu harus:

  1. Menginisialisasi array kosong bernama expenses
  2. Membuat loop do yang menampilkan menu dan membaca input pengguna
  3. Saat pengguna memasukkan "1", meminta nama dan jumlah pengeluaran, membuat hash dengan kunci :name dan :amount, menambahkannya ke array expenses, lalu mencetak Expense added!
  4. Saat pengguna memasukkan "2", menampilkan semua pengeluaran atau pesan jika belum ada
  5. Saat pengguna memasukkan "3", menghitung dan menampilkan total serta rata-rata semua pengeluaran, atau pesan jika belum ada
  6. Saat pengguna memasukkan "4", menghapus semua pengeluaran dari array dan mencetak All expenses cleared!
  7. Saat pengguna memasukkan "5", mencetak Goodbye! dan keluar dari perulangan
  8. Untuk input lainnya, mencetak: Invalid option. Please try again.

Menu harus ditampilkan persis seperti sebelumnya:


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

Misalnya, jika inputnya adalah 7, abc, lalu 5 (dua opsi tidak valid, lalu keluar), outputnya harus seperti berikut:


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

Jika inputnya adalah 1, Coffee, 4.5, 6, 2, lalu 5 (menambahkan pengeluaran, opsi tidak valid, melihat pengeluaran, lalu keluar), outputnya harus seperti berikut:


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

Coba sendiri

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

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Ruby online