我试图完成黑客挑战。当我尝试在循环中使用puts arr.length
时,
n = gets.strip.to_i
arr = gets.strip
arr = arr.split(' ').map(&:to_i)
n.times do |i|
puts arr.length
arr = arr[i] - 2
if arr[i] <= 0
arr[i].delete
end
end
我收到错误:
!in `block in': undefined method `length' for 3:Fixnum (NoMethodError)
我不理解,因为arr.length
在循环之外工作。为什么我会收到此错误?
答案 0 :(得分:1)
你已经在循环中重新分配给arr
,我假设第一次通过循环已经有效但是在第二次传递时,arr
现在是一个整数。
您应该在循环中使用不同的变量名称
答案 1 :(得分:1)
您将arr
重新分配为Fixnum
:arr = arr[i] - 2
。因此错误