2012-11-30 86 views
2

我是Java的新手,正在學習一些課程。但是,在下面這段代碼中,我在編譯時遇到了「Unreachable statement」錯誤。任何指針,我做錯了什麼?嘗試編譯「while」語句時出現「無法訪問的語句」

public String getDeliveredList() { 
    int count = 0; 
    while (count < deliveredList.size()){ 
     return ("Order # " + count + deliveredList.get(count).getAsString()); 
     count++; 
    } 
} 
+1

您的退貨聲明後不能有聲明。它永遠不會被執行,因爲它是無法訪問的(你的代碼已經從方法中返回執行) –

回答

10

一旦你從函數返回,在邏輯上就再也這一點後,再執行任何東西 - 在count++聲明將永遠不會達到。

while (count < deliveredList.size()){ 

    // function always ends and returns value here 
    return ("Order # " + count + deliveredList.get(count).getAsString()); 

    // this will never get run 
    count++; 
} 
+2

是的,並且該例程最多隻會執行一次(部分)迭代。 'if(count

+0

dbaseman是對的。您應該在return語句之前嘗試'count ++;',如果這仍然適用於您正在嘗試執行的操作。 – hologram

0

如果你已經從一個函數,那麼任何聲明從那裏返回的功能基本上是不可達語句後點返回,編譯器將這些陳述發出一個錯誤。

但是下面的代碼將不會發出返回

void max(int a,int b) 
{ 
    if(a>b) 
    { 
     System.out.println(a+" is greater"); 
     return; 
    } 

    System.out.println(b+" is greater"); 
    return; 
} 

這之後的書面陳述的錯誤inspite是因爲第一個return語句是嵌套的範圍內編寫和功能範圍不是立即可見。當a> b時程序執行只會通過第一個返回語句。如果不是這樣,那麼這個代碼塊就不會被執行。因此儘管在返回後有語句,但代碼是可編譯的;