From: "David A. Black" Date: 2009-07-17T09:04:21+09:00 Subject: Re: Need Help with a Very, Very Simple Program Hi -- On Fri, 17 Jul 2009, Max Norman wrote: > I'm almost an absolute novice in Ruby; it is my first language and I > just began learning the basics yesterday, using Chris Pine's 'Learning > to Program.' Welcome to Ruby! > The trouble I'm having is simple, but nonetheless I would appreciate an > explanation. The little program I've written accomplishes a simple task: > it asks for your favorite number, adds one to it, then returns it to > you. Here it is: > > puts 'Hey there, I\'m Uno.' > puts 'What\'s your favorite number?' > number = gets.chomp > better = number.to_i + 1 > puts better + '...That\'s better.' > > I'm receiving this error: String can't be coerced into Fixnum > (TypeError).' Why can't this variable--which contains a numeric > string--be converted into an integer? The reason is that better is an integer, but "That's better." is a string. So it's like you're trying to do: 5 + "hello" and that doesn't work. You can convert back: puts better.to_s + "...That's better" or use Ruby's string interpolation syntax, which inserts expressions into strings, via the #{} construct, and does the conversion for you: puts "#{better}...That's better." I've interpolated better, not better.to_s, and it will automatically be to_s'd for me. David -- David A. Black / Ruby Power and Light, LLC Ruby/Rails consulting & training: http://www.rubypal.com Now available: The Well-Grounded Rubyist (http://manning.com/black2) Training! Intro to Ruby, with Black & Kastner, September 14-17 (More info: http://rubyurl.com/vmzN)