Ruby Ruby Objects and Classes Build a Bank Account Class Printing The BankAccount

No exact error just try again

What I'm I misunderstanding here?

class BankAccount
  attr_reader :name

  def initialize(name)
    @name = name
    @transactions = []
    add_transaction("Beginning Balance", 0)

  def balance
    balance = 0
    @transactions.each do |transaction|
      balance += transaction[:amount]

  def debit(description, amount)
    add_transaction(description, -amount)

  def credit(description, amount)
    add_transaction(description, amount)

  def add_transaction(description, amount)
    @transactions.push(description: description, amount: amount)

  def to_s
    puts "Name:#{name}, Balance:#{sprintf("%0.2",balance)}"


1 Answer

Jennifer Nordell
Jennifer Nordell
Treehouse Teacher

Hi there! I'll be honest, I had to try this challenge a few times before I could work out what they wanted. I feel like this could be worded better. They say to display the string, but the bummer message says the correctly formatted string wasn't returned. This was my first clue. It wants the string returned.

Secondly, the challenge says the sprintf is not needed. To be clear, this will not pass if you use the sprintf method. So I took that out as well. But I still wasn't getting the right result. So I looked back up at the format they gave and noticed something: after each colon there is a space. But there was no space in yours. Yours would have printed out something like "Name:Jennifer" instead of "Name: Jennifer". Note the extra space in the second version.

Here was my result that passed:

  def to_s
    return "Name: #{name}, Balance: #{balance}"

Hope this helps! :sparkles:

:bulb: Hint going forward: the challenges don't always include a hint but pay special attention if it says something wasn't returned. It's probably looking for a return statement somewhere.

Also note that this wording choice given in the challenge has been reported to support as I feel it is rather misleading.