我写了下面的基本代码
puts ' Hi there , what is your favorite number ? '
number = gets.chomp
puts number + ' is beautiful '
puts 1 + number.to_i + 'is way better'
但是当我运行它时,我得到错误“String不能被强制转换为Fixnum(TypeError)”。我该如何更正此错误?
答案 0 :(得分:13)
您无法向数字添加字符串。您可以向String添加一个数字,因为它被强制转换为String:
'1' + 1
# => "11"
1 + 1
# => 2
1 + '1'
# TypeError!
由于我怀疑您希望显示为您的号码添加1的结果,因此您应明确cast it to string:
puts (1 + number.to_i).to_s + ' is way better'
或,使用string interpolation:
puts "#{1 + number.to_i} is way better"
答案 1 :(得分:1)
当您尝试将字符串添加到数字时,通常不会发生此错误不能将字符串强制转换为Integer 。因为您想在数字上加1并用字符串“更好”将其连接起来。您必须将将数字加1的结果显式转换为字符串,然后将其与字符串“更好”结合起来。
您可以将代码更新为此:
puts (1 + number.to_i).to_s + " " + 'is way better'
答案 2 :(得分:0)
您可能会找到输入' xyz'的结果。作为一个令人惊讶的输入。
此discussion用于确定输入字符串是否为数字可能会有所帮助。
答案 3 :(得分:0)
假设数字是自然数:
number = gets.chomp
puts "#{number} is beautiful ", "#{number.succ} is way better"