陷入错误循环:无法访问语句且未提供返回语句

Posted

技术标签:

【中文标题】陷入错误循环:无法访问语句且未提供返回语句【英文标题】:Stuck in a loop of errors: unreachable statement and no return statement provided 【发布时间】: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 语句来向我的朋友解释。删除它使其工作。这对我来说太愚蠢了。谢谢大家。 【参考方案1】:

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

【讨论】:

【参考方案2】:

第一个 if Block 没有 else...

如果(检查(s,k)!=-1)

……

【讨论】:

【参考方案3】:

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

【讨论】:

好吧,我确实使用 Eclipse,但我是直接在 codechef 上编码的,所以我很懒,没有添加缩进

以上是关于陷入错误循环:无法访问语句且未提供返回语句的主要内容,如果未能解决你的问题,请参考以下文章

为什么BlueJ给我的代码一个“无法访问的语句”错误? [重复]

Firefox 上的 Google Analytics JS 代码中的“返回语句后代码无法访问”错误 - 这是我的错吗?

Java错误:创建新的链表节点时无法访问语句[关闭]

为啥 Java 编译器不会为无法访问的 then 语句生成无法访问的语句错误?

为啥我在 Java 中出现无法访问的语句错误?

它显示无法访问的语句错误