陷入错误循环:无法访问的语句,并且没有提供返回语句

时间:2016-05-29 07:08:03

标签: java unreachable-code unreachable-statement

以下是我的代码片段:

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块中,但它仍然要求返回语句。即使编译器知道我最后编写的任何内容都是多余的,为什么它仍然显示错误?

3 个答案:

答案 0 :(得分:1)

第一个if if还没有其他......

如果(校验(S,K)!= - 1){

...... }

答案 1 :(得分:1)

如果您的第一次检查check(s, k)返回-1,那么您就不会返回任何内容

答案 2 :(得分:0)

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,它会帮助你发现这些东西。它字面上为我添加了声明。