`+':nil不能被强制转换为Fixnum(TypeError)。 Lucky_seven?(数字)

时间:2015-10-07 22:18:34

标签: ruby typeerror fixnum

我遇到了轻微的打嗝。我确信这很简单,但对我来说,生活无法理解。

方法的功能很简单,给定一个“数字”数组,如果任何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

2 个答案:

答案 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