我遇到了轻微的打嗝。我确信这很简单,但对我来说,生活无法理解。
方法的功能很简单,给定一个“数字”数组,如果任何3个连续数字加起来则返回true,否则为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
答案 0 :(得分:1)
您正在尝试访问i
。但是当while i < (numbers.length-2)
到达数字中的最后一个元素时会发生什么?尝试
return false
基本上发生了什么,是你正在访问一个超出范围的元素。此外,您应该在循环之后添加blabla3.cgi
语句。
答案 1 :(得分:0)
使用上面的建议,我做了两个简单的更改。这是工作版本。
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