if/for/while中的“缺失返回语句”

if/for/while中的“缺失返回语句”

我有一个关于返回语句的问题if() while()for()陈述。正如您在下面的方法中所看到的,它期望我return字符串值。问题是如果我用return语句在我的if语句块时,编译器将返回错误。missing return statement.

public String myMethod(){
    if(condition)
    {
       return x;
    }}

当然,我可以将方法头更改为void和使用System.out.println而不是return..但这样做对吗?我是不是遗漏了什么?

任何帮助都是非常感谢的。


呼如林
浏览 535回答 3
3回答

弑天下

如果您将返回语句放入if, while或for语句,则它可能返回值,也可能不返回值。如果它不会进入这些语句中,那么该方法也应该返回一些值(可能为NULL)。为了确保这一点,编译器将强制您编写后面的返回语句。if, while或for.但如果你写if / else块,并且它们中的每一个都有返回,然后编译器知道if或else将得到执行,而方法将返回一个值。所以这次编译器不会强迫你。if(condition){  return;}else{  return;}

白板的微信

那是因为函数需要返回值。想象一下如果你执行myMethod()它不会进入if(condition)您的函数会返回什么?编译器需要知道在函数的每一个可能的执行中返回什么。检查Java文档:定义:如果一个方法声明有一个返回类型,那么在方法的末尾必须有一个返回语句。如果返回语句不存在,则抛出丢失的返回语句错误。如果方法没有返回类型,并且没有使用void声明(即错误地省略了它),也会引发此错误。你可以做些什么来解决你的问题:public String myMethod(){     String result = null;     if(condition)     {        result = x;     }     return result;}

慕标琳琳

试着,好像if condition返回false,因此它将返回空的,否则不会返回任何内容。public String myMethod(){     if(condition)     {        return x;     }return ""}因为编译器不知道这些if块是否会到达,所以它给了您一个错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java