Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 范围的值不正确_Ruby_Variables_Loops_Range - Fatal编程技术网

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