Ruby 范围的值不正确
当我运行以下代码时:Ruby 范围的值不正确,ruby,variables,loops,range,Ruby,Variables,Loops,Range,当我运行以下代码时: def db(y) return self % y == 0 end puts "To number:" n = gets.chomp for i in 1..n if i.db(3) puts "Fizz!" if i.db(5) puts "FIZZBUZZ!" end elsif i.db(5) puts "Buzz!" else puts i end end 我得到一个“范围值错误”错误。
def db(y)
return self % y == 0
end
puts "To number:"
n = gets.chomp
for i in 1..n
if i.db(3)
puts "Fizz!"
if i.db(5)
puts "FIZZBUZZ!"
end
elsif i.db(5)
puts "Buzz!"
else
puts i
end
end
我得到一个“范围值错误”错误。为什么会发生这种情况?我如何修复它?对某些值使用变量的正常范围可以完美地工作,包括循环,为什么不工作
注意:我希望for
循环保持为for
循环。只需执行以下操作:
n = gets.chomp.to_i
get.chomp
将为您提供String
实例。您需要将其设置为Fixnum
。否则,例如的1..“4”
不是有效范围。因此错误“范围值错误”错误。
是您的朋友
2.0.0p0 :001 > 1.."2"
ArgumentError: bad value for range
from (irb):1
from /home/kirti/.rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in `<main>'
2.0.0p0 :002 > 1..2
=> 1..2
2.0.0p0 :003 >
2.0.0p0:001>1.“2”
ArgumentError:范围的值不正确
来自(irb):1
from/home/kirti/.rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in`'
2.0.0p0:002>1..2
=> 1..2
2.0.0p0:003>
返回字符串
您需要使用将其转换为Fixnum
替换以下行:
n = gets.chomp
与:
在这种情况下是多余的-忽略无关字符。
n = gets.chomp.to_i