当我运行以下代码时:
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循环保持为for循环.
解决方法
请按以下步骤操作:
n = gets.chomp.to_i
gets.chomp将为您提供String实例.你需要把它作为Fixnum.否则1 ..“4”例如不是有效范围.所以错误“范围错误值”错误. String#to_i
是你的朋友.
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 >