陷入错误循环:无法访问语句且未提供 return 语句
Stuck in a loop of errors: unreachable statement and no return statement provided
这是我的代码片段:
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语句时,它显示return语句不可达。我在这里找到了一个有用的答案:Unreachable return statement still throws error 并且我尝试将它放在 try catch 块中,但它仍然要求 return 语句。即使编译器知道我最后写的东西都是多余的,为什么还是报错呢?
第一个if块没有else...
if(检查(s,k)!=-1){
……
}
如果你第一次检查 check(s, k)
returns -1
那么你 return 什么都没有
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;
}
}
}
// MISSING RETURN BELOW
return n;
}
我建议使用像 eclipse 这样的 IDE,它会帮助您发现这些东西。它从字面上为我添加了声明。
这是我的代码片段:
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语句时,它显示return语句不可达。我在这里找到了一个有用的答案:Unreachable return statement still throws error 并且我尝试将它放在 try catch 块中,但它仍然要求 return 语句。即使编译器知道我最后写的东西都是多余的,为什么还是报错呢?
第一个if块没有else...
if(检查(s,k)!=-1){
…… }
如果你第一次检查 check(s, k)
returns -1
那么你 return 什么都没有
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;
}
}
}
// MISSING RETURN BELOW
return n;
}
我建议使用像 eclipse 这样的 IDE,它会帮助您发现这些东西。它从字面上为我添加了声明。