我正在尝试完成一个hackerbank挑战。当我尝试在循环中使用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
在循环之外工作。为什么我会出现此错误?
您在此处将arr
重新分配为Fixnum
:arr = arr[i] - 2
。因此出现错误
您已经在循环中重新分配了arr
,我假设通过循环的第一次传递已经成功,但在第二次传递中,arr
现在是一个整数。
您应该在循环中使用一个不同的变量名uniq