“Missing return statement” within if / for / while
我有一个关于
如您在以下方法中看到的,期望我
问题是,如果要在我的
1 2 3 4 5 6 7 |
当然,我可以将方法标题更改为
非常感谢您的帮助。
如果将return语句放在
但是,如果您编写
1 2 3 4 5 6 7 8 | if(condition) { return; } else { return; } |
那是因为函数需要返回一个值。想象一下,如果执行
检查Java文档:
Definition: If a method declaration has a return type then there must
be a return statement at the end of the method. If the return
statement is not there the missing return statement error is thrown.This error is also thrown if the method does not have a return type
and has not been declared using void (i.e., it was mistakenly
omitted).
您可以解决您的问题:
1 2 3 4 5 6 7 8 9 |
那是非法的语法。返回变量不是可选的。您必须返回在方法中指定类型的变量。
1 2 3 4 5 6 7 |
您实际上是在说,我保证任何类都可以使用此方法(公共),并且我保证它将始终返回String(字符串)。
然后您说如果我的条件为真,我将返回x。好吧,这太糟糕了,您的承诺没有中庸之道。您保证myMethod总是返回一个字符串。即使您的条件始终为true,编译器也必须假定它可能为假。因此,您总是需要在任何条件之外的非空方法的末尾添加一个返回值,以防万一所有条件都失败了。
1 2 3 4 5 6 7 8 | public String myMethod() { if(condition) { return x; } return""; //or whatever the default behavior will be if all of your conditions fail to return. } |
尝试使用,就像
1 2 3 4 5 6 7 8 |
由于编译器不知道是否会到达任何if块,因此会给您带来错误。
myMethod()应??该如何返回String值。如果您的条件为false,那么myMethod返回什么? ans否,因此您需要在错误条件下定义return null或某些字符串值
1 2 3 4 5 6 7 | public String myMethod() { boolean c=true; if (conditions) { return"d"; } return null;//or some other string value } |
如果
1 2 3 4 5 6 7 8 9 | public String myMethod() { if(condition) { return x; } // if condition is false you HAVE TO return a string // you could return a string, a empty string or null return otherCondition; } |
供参考:
Oracle文档返回声明
仅当条件为true时,才返回字符串。
1 2 3 4 5 6 7 8 9 |