Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialRobert Smith
2,144 Pointsget.chomp.to_i always outputs the number 0, regardless of the string input. My code is below with the output following.
def create_list
print "What is the list name? "
name = gets.chomp
hash = { "name" => name, "items" => Array.new }
return hash
end
def add_list_item
print "What is the item called? "
item_name = gets.chomp
print "How much? "
quantity = gets.chomp.to_i
hash = { "name" => item_name, "quantity" => quantity }
return hash
end
list = create_list()
puts list.inspect
list['items'].push(add_list_item())
puts list.inspect
This is the output, and if you notice in the hash, quantity is zero:
treehouse:~/workspace$ ruby shopping_list.rb
What is the list name? Grocery
{"name"=>"Grocery", "items"=>[]}
What is the item called? Milk
How much? two
{"name"=>"Grocery", "items"=>[{"name"=>"Milk", "quantity"=>0}]}
[MOD: edited code block -srh]
1 Answer
Steve Hunter
57,712 PointsHi Robert,
I don't think to_i
converts "two" to 2
. It converts "2" to 2
. The thing entered as a string has to be capable of a direct conversion to an integer. If you entered "Three hundred and twenty six", it would not come up with 326
. The gets
method reads user input as a string; it is expecting a sentence. Sometimes, we ask for a number; it still expects a sentence, but if we enter "2", the to_i
method can convert that to a 2
integer. If we enter a string like "two", that's a little beyond the capabilities of the to_i
method - but there are methods that can do that - just not at this level.
I hope that helps! Enter 2, not two.
Steve.
Robert Smith
2,144 PointsRobert Smith
2,144 PointsAwesome. I have been wracking my brain and I can't believe it was so simple. Thank you so much!
Steve Hunter
57,712 PointsSteve Hunter
57,712 PointsHey, no problem!