No implicit conversion of Fixnum into String, though "to_i" is used

382 Views Asked by At

I'm doing a task in "Learn to Program" by Chris Pine. The program asks for a person's favorite number, adds +1, and shows the result. I wrote this:

puts 'Hello, what\' your favorite number?'
number = gets.to_i
puts 'Here\' a better bigger favorite number - ' + number + 1

And it returned this:

Better_number.rb:3:in \'+\': no implicit conversion of Fixnum into String (TypeError)

I also tried

number = gets.chomp.to_i

but that doesn't seem to work.

3

There are 3 best solutions below

2
Sergio Tulentsev On BEST ANSWER

You can't add a number to a string in ruby. You have to make it a string.

puts 'Hello, what\' your favorite number?'
number = gets.to_i
puts 'Here\' a better bigger favorite number - ' + (number + 1).to_s
# or 
bigger_number = number + 1
puts 'Here\' a better bigger favorite number - ' + bigger_number.to_s
# or 
puts "Here's a better bigger favorite number - #{bigger_number}"
0
Ilya On

Try:

puts "Here\' a better bigger favorite number - #{number + 1}"

You can not sum string with number.

0
Dharmesh Rupani On

You can use the #{"interpolation"} to fix your problem.

puts 'Hello, what\' your favorite number?'
number = gets.to_i
puts 'Here\' a better bigger favorite number - #{number + 1}'