Why is this code giving an “unreachable code” error?

痴心易碎 提交于 2019-11-26 16:48:14

问题


I can't seem to find a way to fix this problem. All i'm doing is declaring an integer and it's telling me that the code is unreachable.

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

回答1:


Once you return from a method, you return to the method that called the method in the first place. Any statements you place after a return would be meaningless, as that is code that you can't reach without seriously violating the program counter (may not be possible in Java).




回答2:


Quoting a comment on the question by Jim H.:

You returned from the pop() method. Anything after that is unreachable.




回答3:


Unreachable code results in compiler error in Java.

In your program the line

int count2 = 0;

will never be reached since it is after the return statement.

Place this line above the return statement to work.




回答4:


The simple explanation in plain English would be the following:

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

method private Object pop(){} is looking for a return type Object and you just gave that return type by writing return myStack[0]; .So your method does not necessarily reach int count2 = 0; because it assumed that the method already reached its goal.




回答5:


Declare before return myStack[0] that fixes



来源:https://stackoverflow.com/questions/9898549/why-is-this-code-giving-an-unreachable-code-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!