【问题标题】:Getting a 'nil:Nil Class' error in Ruby, but the array doesn't seem to empty在 Ruby 中出现“nil:Nil Class”错误,但数组似乎没有为空
【发布时间】:2014-05-05 23:39:06
【问题描述】:

我正在尝试用 Ruby 编写“Eratosthenes 筛”,但在第二个“while”循环中遇到了困难。我想测试一下是否integers[j] % integers[0] == 0,但是编译器在这一行一直给我一个nil:Nil Class 错误。我无法弄清楚问题所在。

n = gets.chomp.to_i
puts

while n < 2
    puts 'Please enter an integer >= 2.'
    puts
    n = gets.chomp.to_i
    puts
end

integers = []

i = 0
while i <= n - 3
   integers[i] = i + 2
   i += 1
end

primes = []

j = 1 
while integers != []
    primes.push integers[0]
    while j <= integers.length
       if integers[j] % integers[0] == 0
           integers.delete(integers[j])
       end  
       j += 1
    end

    integers.shift    
    j = 1
end

puts integers 
puts
puts primes

提前感谢您的帮助!

【问题讨论】:

  • 你有什么问题?
  • 对不起,如果我不清楚,但我的问题是:为什么我会收到以下错误:'no method '%' for nil:Nil Class' on the line: if integers[j] % 整数[0] == 0 ?
  • 请尝试使用{} 按钮格式化代码。这是火车残骸。
  • 抱歉,这是我第一次发帖...谢谢您的建议。

标签: ruby arrays loops


【解决方案1】:

这是一个错误。您正在测试j &lt;= integers.length。因此,例如,如果您的数组有五个项目,则最后一次迭代将是 integers[5]。但是五项数组中的最后一个索引是 4(因为它从 0 开始)。你想要j &lt; integers.length

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多