滞留在错误的循环:不到的语句,并没有提供return语句

问题描述:

这里是我的代码片段:滞留在错误的循环:不到的语句,并没有提供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; 
     } 
    } 
    } 
} 

所以错误说是有缺失的return语句(不知道哪种方案有我错过了)。但是,当我在最后添加return语句时,它显示return语句无法访问。我在这里找到了一个有用的答案:Unreachable return statement still throws error我试着把它放在try catch块中,但它仍然要求返回语句。尽管编译器知道我最后写的东西是多余的,为什么它仍然显示错误?

+0

此方法不会遗漏任何分支上的'return'语句。或许问题出在你的“检查”方法上?你能包括它的代码吗? – Mureinik

+2

如果第一个if条件为false,则必须在最后具有return语句。如果您使用适当的缩进,您的生活会更容易。 – Eran

+0

只有当检查不是-1时,代码才会进入此方法。我应该发布整个代码吗? – Rohinb97

如果你第一次检查check(s, k)返回-1那么你不返回任何

第一IF块没有别的......

如果(支票(S,K)!= - 1){

...... }

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; }

我建议使用像EC的IDE它会帮助你发现这些东西。它从字面上为我添加了这个声明。

+0

嗯,我使用Eclipse,但我直接在codechef上编码,所以我懒惰,没有添加缩进 – Rohinb97