2012-03-27 59 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()方法返回。之後的任何事情都無法得到。 – 2012-03-27 22:21:35

+11

因爲它是'不可達代碼'。 – 2012-03-27 22:22:57

+0

吉姆說什麼。 「返回」意味着「方法的結束」。 – 2012-03-27 22:23:47

回答

4

一旦您從return一個方法,您返回到第一個方法調用該方法。您在返回後放置的任何語句都是沒有意義的,因爲這是在嚴重違反程序計數器的情況下無法達到的代碼(可能無法在Java中使用)。

7

通過Jim H.引述關於這個問題的評論:

您從pop()方法返回。之後的任何事情都無法得到。

+2

嘿,對不起,我無法抗拒...我知道這不是討論這個地方,但老實說,我發現它看到一個問題'沒有答案',然後發現有幾個偉大的答案張貼爲評論惱人。爲什麼這樣做?避免降價風險?恕我直言,它只會讓它很難找到一個好的答案。對不起 – jambriz 2012-03-27 23:27:05

+0

任何人都可以枚舉導致無法訪問代碼的其他類型的條件?例如:'while(true){} S.O.P. 「//不可達? – Kameron 2012-06-29 13:52:33

0

無法訪問的代碼導致Java中的編譯器錯誤。

在你的程序行

int count2 = 0; 

將永遠不會達到,因爲它是return語句之後。

將此行放在return語句上方。

-1

申報前返回myStack [0],修復

+0

沒有必要這樣做,因爲變量myStack先前被刪除。正確的答案是被接受的答案。 – GHajba 2015-07-29 06:27:44

0

用簡單的英語簡單解釋是以下幾點:

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

方法private Object pop(){}正在尋找一個返回類型Object,你剛纔給那回報鍵入return myStack[0];。因此,您的方法不一定會達到int count2 = 0;,因爲它假定該方法已達到其目標。