首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`+':nil不能被强制为Fixnum (TypeError)。Lucky_seven?(数字)

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

Stack Overflow用户
提问于 2015-10-08 06:18:34
回答 2查看 235关注 0票数 0

我遇到了一点小问题。我相信这很简单,但我怎么也搞不懂。

该方法的功能很简单,给定一个" numbers“数组,如果任意3个连续的数字相加为7,则返回true,否则返回false。

我下面的代码完全满足第一个条件,因为在任何符合条件的数字集中都将返回true。我的问题是,当数字数组不满足代码中设置的参数时,而不是false,我得到一个错误‘+’:nil不能被强制到Fixnum (TypeError)中,任何反馈都是有帮助的。提前谢谢。请看下面的代码:*是问题行。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2015-10-08 06:38:32

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

代码语言:javascript
复制
while i < (numbers.length-2)

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

票数 1
EN

Stack Overflow用户

发布于 2015-10-09 02:45:59

根据上面的建议,我做了两个简单的修改。以下是工作版本。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33003368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档