0

我遇到了轻微的打嗝。我敢肯定这很简单,但我一生都无法弄清楚。

该方法的功能很简单,给定一个“数字”数组,如果任何 3 个连续数字加起来等于 7,则返回 true,否则返回 false。

我下面的代码完全满足第一个条件,因为任何符合条件的数字集都将返回 true。我的问题是,当一个数字数组不符合代码中设置的参数时,而不是 false,我得到一个错误 `+': nil can't be coerced into 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
4

2 回答 2

1

您正在尝试访问numbers[i+2]. 但是当i到达数字中的最后一个元素时会发生什么?尝试

while i < (numbers.length-2)

基本上正在发生的事情是,您正在访问越界的元素。此外,您可能应该return false在循环之后放置一条语句。

于 2015-10-07T22:38:31.683 回答
0

使用上面的建议,我做了 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
于 2015-10-08T18:45:58.937 回答