`+': nil не может быть принудительно введен в Fixnum (TypeError). Lucky_seven?(Номера)

Я столкнулся с небольшой икотой. Я уверен, что это просто, но по жизни я не могу понять это.

Функция метода проста, учитывая массив "цифр", возвращает true, если любые 3 последовательных числа складывают до 7, иначе false.

Мой код, приведенный ниже, полностью удовлетворяет первому условию, так как в любом подходящем наборе чисел возвращается значение true. Моя проблема в том, что когда массив чисел не соответствует параметрам, установленным в коде, вместо false, я получаю ошибку "+": nil не может быть принудительно введен в Fixnum (TypeError), любая обратная связь полезна. Заранее спасибо. Пожалуйста, смотрите код ниже: * это проблема строки.

def lucky_sevens?(numbers)
i = 0
while i < numbers.length 
each_number = numbers[i]
next_number = numbers[i+1]
third_number = numbers[i+2]
 **if  (each_number + next_number + third_number) == 7**
           return true
 end

    i += 1
end
end

2 ответа

Вы пытаетесь получить доступ numbers[i+2], Но что происходит, когда i доходит до последнего элемента в числах? Пытаться

while i < (numbers.length-2)

В основном происходит то, что вы получаете доступ к элементу за пределами. Кроме того, вы, вероятно, должны поставить return false заявление после цикла.

Используя приведенный выше совет, я сделал 2 простых изменения. Вот рабочая версия.

def lucky_sevens?(numbers)
    i = 0
    while i < (numbers.length - 2) 
    each_number = numbers[i]
    next_number = numbers[i+1]
    third_number = numbers[i+2]
        if(each_number + next_number + third_number) == 7
        return true
        end
    i += 1
    end
return false
end
Другие вопросы по тегам