oor*_*soy 11 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
Run Code Online (Sandbox Code Playgroud)
我得到了"范围错误值"错误.为什么会发生这种情况我该怎么办呢?对某些值使用变量的正常范围可以完美地工作,包括for循环,为什么这不起作用?
注意:我希望for循环保持为for循环.
Aru*_*hit 17
请按以下步骤操作:
n = gets.chomp.to_i
Run Code Online (Sandbox Code Playgroud)
gets.chomp会给你一个String实例.你需要把它作为Fixnum.否则1.."4"因为例如不是有效范围.所以错误"bad value for range" error. 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 >
Run Code Online (Sandbox Code Playgroud)
gets 返回String.
您需要将其转换为Fixnum使用String#to_i.
替换以下行:
n = gets.chomp
Run Code Online (Sandbox Code Playgroud)
附:
n = gets.chomp.to_i
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15547 次 |
| 最近记录: |