虽然使用了“to_i”,但没有将Fixnum隐式转换为字符串

问题描述:

我正在执行Chris Pine的“学习编程”任务。该程序要求一个人最喜欢的号码,加+1,并显示结果。我写了这个:虽然使用了“to_i”,但没有将Fixnum隐式转换为字符串

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

而且它返回此:

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

我也试过

number = gets.chomp.to_i 

,但似乎并没有工作。

+1

你的问题是什么? – sawa

+0

你在这里写错'puts'在这里\'更好的更大的喜欢的数字 - '+数字+ 1'因为''这里\'是一个更好的更大的喜爱数字 - ''是一个字符串,'数字'是整数,所以不能使用'+'为字符串和修正号 –

+0

那么你想要展示什么? –

你不能在红宝石中添加一个数字到字符串。你必须使它成为一个字符串。

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

Got it!现在它正在工作。非常感谢! – annabretsko

+0

@Brets:不要忘记接受有用的答案。 –

+0

@SergioTulentsev我认为'铸造'这个词在这里可能会引起误解。通过调用to_s,会创建一个全新的对象,一个字符串,即数字的字符串表示形式。 –

尝试:

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

你不能用数字总结字符串。

可以使用#{"interpolation"}解决您的问题。

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