首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回循环: Java中的错误吗?

返回循环: Java中的错误吗?
EN

Stack Overflow用户
提问于 2017-02-08 12:51:57
回答 7查看 161关注 0票数 0

在用Python编写代码时,我经常通过在循环中插入return来中断函数/方法,例如,当达到条件时,我想返回值。我注意到,如果我在Java中这样做,IDE (在本例中是Eclipse)似乎不识别return命令。例如,在这里:

代码语言:javascript
运行
复制
protected Node getTrueParent() {
    for (Edge e : this.edges) {
        if (e.getNode2() == this && (!e.isPseudo())) {
            Node parent = e.getNode1();
            return parent;
        }
    }
}

Eclipse指出,“此方法必须返回Node类型的结果”。我做的是错的吗?而且,parent是在for循环中声明的,所以我不能在循环之外返回它。一种方法是在开始时(即在循环之外)声明parent,但这对我来说是非常草率的。写这篇文章的合适方法是什么?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-02-08 12:53:27

当您在循环中找不到结果时,您就缺少了一个return

代码语言:javascript
运行
复制
protected Node getTrueParent() {
    for (Edge e : this.edges) {
        if (e.getNode2() == this && (!e.isPseudo())) {
            Node parent = e.getNode1();
            return parent;
        }
    }
    return null; // ADD THIS
}

如果您确信这不应该发生,并且您认为这里不应该有返回,那么抛出一个例外:

代码语言:javascript
运行
复制
protected Node getTrueParent() {
    for (Edge e : this.edges) {
        if (e.getNode2() == this && (!e.isPseudo())) {
            Node parent = e.getNode1();
            return parent;
        }
    }
    throw new IllegalStateException("Somebody broke the data. Send Help!");
}
票数 7
EN

Stack Overflow用户

发布于 2017-02-08 12:53:34

如果循环结束而不返回任何内容,则必须返回某些内容。

例如:

代码语言:javascript
运行
复制
protected Node getTrueParent() {
    for (Edge e : this.edges) {
        if (e.getNode2() == this && (!e.isPseudo())) {
            return e.getNode1();
        }
    }
    return null;
}
票数 3
EN

Stack Overflow用户

发布于 2017-02-08 12:54:03

如果e.getNode2()永远不是this,它会返回什么?整个方法的所有路径都必须返回某些内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42113653

复制
相关文章

相似问题

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