我编写了这个非常简单的代码块,可以完成我期望的所有代码 - 但是,在输出结束时,我总是得到错误消息“nil的未定义方法`%':NilClass(NoMethodError)”。如何/为什么会出现这种情况,我该如何解决?
def fizzblam
range =* (1..100)
range.each do |i|
if range[i] % 7 == 0 && range[i] % 5 == 0
puts "fizzblam"
elsif range[i] % 7 == 0 && range[i] % 5 != 0
puts "blam"
elsif range[i] % 7 != 0 && range[i] % 5 == 0
puts "fizz"
else puts range[i]
end
end
end
fizzblam
答案 0 :(得分:2)
range
的元素是1到100,但是range
的索引是0到99. each
方法已经为你提供了数组的元素,而不是索引 - 只需在循环体内使用i
而不是range[i]
。
如果您使用a
而不是a.fetch(i)
索引数组a[i]
,那么您会得到更合理的错误 - 前者抛出IndexError
而后者则{{1} }}