`+': 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