2012-03-27 1 views
1

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

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

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

+11

Потому что это 'unreachable code'. –

+0

Что сказал Джим. «Возврат» означает «конец метода». –

ответ

4

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

7

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

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

+2

Хех, извините, я не мог сопротивляться ... Я знаю, что это не место, чтобы обсудить это, но, честно говоря, я нахожу это раздражающим, чтобы увидеть вопрос «без ответа», а затем узнать, что было несколько замечательных ответов, размещенных как комментарии. зачем это делать? во избежание риска падения вниз? ИМХО это только затрудняет поиск хорошего ответа. извините еще раз – jambriz

+0

Может ли кто-нибудь перечислить другие типы условий, ведущих к недостижимым кодам? например: 'while (true) {} S.O.P. «// Недоступен? – Kameron

0

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

В программе линия

int count2 = 0; 

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

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

-1

Declare перед возвращением myStack [0], который фиксирует

+0

нет необходимости делать это, потому что переменная 'myStack' объявлена ​​ранее. И правильный ответ - тот, который принят. – GHajba

0

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

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

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