我遇到了一点小问题。我相信这很简单,但我怎么也搞不懂。
该方法的功能很简单,给定一个" numbers“数组,如果任意3个连续的数字相加为7,则返回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发布于 2015-10-08 06:38:32
您正在尝试访问numbers[i+2]。但是当i到达数字中的最后一个元素时会发生什么呢?试一试
while i < (numbers.length-2)基本上发生的情况是,您正在访问越界的元素。此外,您可能应该在循环之后放置一条return false语句。
发布于 2015-10-09 02:45:59
根据上面的建议,我做了两个简单的修改。以下是工作版本。
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
endhttps://stackoverflow.com/questions/33003368
复制相似问题