【问题标题】:Why is this code giving an "unreachable code" error?为什么此代码给出“无法访问的代码”错误?
【发布时间】:2012-04-11 12:23:28
【问题描述】:

我似乎找不到解决此问题的方法。我所做的只是声明一个整数,它告诉我代码无法访问。

private class myStack{
    Object [] myStack = new Object[50];

    private void push(Object a){
        int count = 50;
        while(count>0){
            myStack[count]=myStack[count-1];
            count--;
        }
        myStack[0]=a;
    }

    private Object pop(){
        return myStack[0];
        int count2 = 0; //Unreachable Code
    }   
}

【问题讨论】:

  • 你从 pop() 方法返回。之后的任何内容都无法访问。
  • 因为是unreachable code
  • 吉姆说的。 “返回”表示“方法结束”。
  • 谢谢吉姆。英。告诉我我问的问题没有帮助..
  • 返回后的每一条语句都只是无法访问的代码……

标签: java compiler-errors unreachable-code


【解决方案1】:

一旦您从一个方法中return,您将返回到首先调用该方法的方法。您在 return 之后放置的任何语句都将毫无意义,因为这是您无法在不严重违反程序计数器的情况下访问的代码(在 Java 中可能无法实现)。

【讨论】:

    【解决方案2】:

    引用Jim H.对该问题的评论:

    您从 pop() 方法返回。之后的任何内容都无法访问。

    【讨论】:

    • 嘿,抱歉,我无法抗拒……我知道这里不是讨论这个问题的地方,但老实说,看到unanswered 的问题我觉得很烦人,然后发现有几个很好的答案张贴为 cmets。为什么那样做?避免被否决的风险?恕我直言,这只会让找到一个好的答案变得更加困难。再次抱歉
    • 任何人都可以列举导致无法访问代码的其他类型的条件吗?例如:'while(true){} S.O.P. '//无法访问?
    【解决方案3】:

    无法访问的代码会导致 Java 中的编译器错误。

    在你的程序中

    int count2 = 0;
    

    永远不会到达,因为它在 return 语句之后。

    将此行放在 return 语句上方即可工作。

    【讨论】:

      【解决方案4】:

      简单的英文解释如下:

       private Object pop(){
          return myStack[0];
          int count2 = 0; //Unreachable Code
      } 
      

      方法private Object pop(){} 正在寻找返回类型Object,而您只是通过编写return myStack[0]; 给出了该返回类型。所以您的方法不一定达到int count2 = 0;,因为它假定该方法已经达到其目标。

      【讨论】:

        【解决方案5】:

        函数中的最后一个语句应该是返回语句。

        Linting 工具会标记它,因为它会在计数器范围结束后混淆新内存的分配。

        【讨论】:

          【解决方案6】:

          在返回 myStack[0] 之前声明修复

          【讨论】:

          • 没有必要这样做,因为变量 myStack 之前已被 declrred。正确的答案是被接受的那个。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-11-17
          • 2013-10-20
          • 2021-04-25
          • 2020-08-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多