当我运行以下代码时:
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 循环,为什么this 不起作用?
注意:我希望 for
循环保留为 for
循环。
最佳答案
只需按照以下步骤操作即可:
n = gets.chomp.to_i
gets.chomp
将为您提供 String
实例。您需要将其设为 Fixnum
。否则 1.."4"
例如不是有效范围。所以错误 “范围的错误值”错误。
String#to_i
是你的 friend 。
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 >
关于ruby - 范围值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21066787/