4

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

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

6 回答 6

9

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

于 2012-03-27T22:25:12.790 回答
8

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

您从 pop() 方法返回。之后的任何事情都无法实现。

于 2012-03-27T22:23:27.717 回答
1

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

在你的程序中

int count2 = 0;

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

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

于 2012-03-27T22:28:12.180 回答
0

函数中的最后一条语句应该是 return 语句。

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

于 2020-01-19T17:34:35.843 回答
0

简单的英语解释如下:

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

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

于 2016-05-08T20:30:29.603 回答
-1

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

于 2015-07-29T06:07:14.863 回答