为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼如林 2019-06-23 14:55:52
if/for/while中的“缺失返回语句”我有一个关于返回语句的问题if() while()或for()陈述。正如您在下面的方法中所看到的,它期望我return字符串值。问题是如果我用return语句在我的if语句块时,编译器将返回错误。missing return statement.public String myMethod(){     if(condition)     {        return x;     }}当然,我可以将方法头更改为void和使用System.out.println而不是return..但这样做对吗?我是不是遗漏了什么?任何帮助都是非常感谢的。
查看完整描述

3 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

如果您将返回语句放入ifwhilefor语句,则它可能返回值,也可能不返回值。如果它不会进入这些语句中,那么该方法也应该返回一些值(可能为NULL)。为了确保这一点,编译器将强制您编写后面的返回语句。ifwhilefor.

但如果你写if / else块,并且它们中的每一个都有返回,然后编译器知道ifelse将得到执行,而方法将返回一个值。所以这次编译器不会强迫你。

if(condition){
 return;}else{
 return;}


查看完整回答
反对 回复 2019-06-23
?
白板的微信

TA贡献1883条经验 获得超3个赞

那是因为函数需要返回值。想象一下如果你执行myMethod()它不会进入if(condition)您的函数会返回什么?编译器需要知道在函数的每一个可能的执行中返回什么。

检查Java文档:

定义:如果一个方法声明有一个返回类型,那么在方法的末尾必须有一个返回语句。如果返回语句不存在,则抛出丢失的返回语句错误。

如果方法没有返回类型,并且没有使用void声明(即错误地省略了它),也会引发此错误。

你可以做些什么来解决你的问题:

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


查看完整回答
反对 回复 2019-06-23
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

试着,好像if condition返回false,因此它将返回空的,否则不会返回任何内容。

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

因为编译器不知道这些if块是否会到达,所以它给了您一个错误。


查看完整回答
反对 回复 2019-06-23
  • 3 回答
  • 0 关注
  • 534 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号