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メソッドから移動すると、最初にメソッドを呼び出したメソッドに戻ります。プログラムカウンターに重大な違反をしないと到達できないコードであるため、リターンの後に配置するステートメントは無意味になります(Javaでは不可能な場合があります)。

于 2012-03-27T22:25:12.790 に答える
8

ジムHによる質問へのコメントを引用します。 :

pop()メソッドから戻りました。それ以降は到達できません。

于 2012-03-27T22:23:27.717 に答える
1

到達不能コードは、Javaでコンパイラエラーを引き起こします。

あなたのプログラムでは、

int count2 = 0;

returnステートメントの後なので、到達することはありません。

この行をreturnステートメントの上に配置して機能させます。

于 2012-03-27T22:28:12.180 に答える
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 に答える
0

関数の最後のステートメントはreturnステートメントである必要があります。

リンティングツールは、カウンタースコープの終了後に新しいメモリの割り当てを混乱させるため、フラグを立てます。

于 2020-01-19T17:34:35.843 に答える
-1

修正するmyStack[0]を返す前に宣言する

于 2015-07-29T06:07:14.863 に答える