2015-12-23 3 views
-1

Я пытаюсь закончить hackerrank challenge.When я пытаюсь использовать puts arr.length в петле,`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

Спасибо, что помогли мне открыть этот сайт. – Charles

ответ

1

Вы переназначение arr как Fixnum здесь: arr = arr[i] - 2. Следовательно, ошибка

1

вы переназначены в arr внутри цикла, я предполагаю, что первый проход через цикл работал, но на втором проходе arr теперь является целым числом.

Вы должны использовать другое имя переменной, которая уник внутри цикла

Смежные вопросы