【发布时间】:2016-09-27 04:37:42
【问题描述】:
这是我的代码的 sn-p:
public static int dc (String s,int k, int c){
String s1, s2;
int m, n;
if (check(s, k) != -1) {
int p = check(s, k);
c++;
s1 = s.substring(0, p) + s.substring(p + 1);
s2 = s.substring(0, p + 1) + s.substring(p + 2);
if ((check(s1, k) == -1) || (check(s2, k) == -1)) {
return c;
} else {
m = dc(s1, k, c);
n = dc(s2, k, c);
if (m > n) {
return n;
} else {
return m;
}
}
}
}
所以错误表明缺少返回语句(不确定我错过了哪个场景)。但是当我在最后添加一个 return 语句时,它表明 return 语句无法访问。我在这里找到了一个有用的答案:Unreachable return statement still throws error,我尝试将它放在 try catch 块中,但它仍然要求返回语句。即使编译器知道我最后写的任何东西都是多余的,为什么它仍然显示错误?
【问题讨论】:
-
此方法不会丢失任何分支上的
return语句。也许问题出在您的check方法上?你能附上它的代码吗? -
最后必须有return语句,以防第一个if条件为假。如果您使用适当的缩进,您的生活会更轻松。
-
只有当 check 不是 -1 时,代码才会进入这个方法。我应该发布整个代码吗?
-
您已经说过该方法返回一个 int,但如果第一个失败会发生什么?如果方法的签名返回 void,您只能在这种情况下不使用 return 语句。
-
我刚刚添加了 if 语句来向我的朋友解释。删除它使其工作。这对我来说太愚蠢了。谢谢大家。
标签: java unreachable-code unreachable-statement