Почему этот код выдает ошибку "недоступный код"?

Я не могу найти способ решить эту проблему. Все, что я делаю, это объявляю целое число, и оно говорит мне, что код недоступен.

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

5 ответов

Решение

Однажды ты return из метода вы возвращаетесь к методу, который вызвал метод в первую очередь. Любые операторы, которые вы помещаете после возврата, будут бессмысленными, так как это код, который вы не можете получить без серьезного нарушения счетчика программы (это может быть невозможно в Java).

Цитирую комментарий по этому вопросу Jim H..:

Вы вернулись из метода pop(). Все, что после этого недоступно.

Недоступный код приводит к ошибке компилятора в Java.

В вашей программе строка

int count2 = 0;

никогда не будет достигнут, так как это после оператора возврата.

Поместите эту строку над оператором return для работы.

Последним оператором в функции должен быть оператор возврата.

Инструменты линтинга будут отмечать это, поскольку это мешает распределению новой памяти после окончания области счетчика.

Простое объяснение на простом английском языке будет следующим:

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

метод private Object pop(){} ищет тип возврата Object и вы только что дали этот тип возврата, написав return myStack[0];.То твой метод не обязательно достигает int count2 = 0; потому что предполагалось, что метод уже достиг своей цели.

Объявите перед возвратом myStack[0], который исправляет

Другие вопросы по тегам