2012-02-15 42 views
0

這是我的代碼,即時獲取一個無法訪問的語句錯誤,但我不知道爲什麼。爲什麼此代碼給出「無法訪問的聲明」錯誤?

public boolean Boardload(String[] args) throws Exception 
{ 
    Robot robot = new Robot(); 
    Color color3 = new Color(114, 46, 33); 
    Color color4 = new Color(180, 0, 0); 

    { 
     Rectangle rectangle = new Rectangle(0, 0, 1365, 770); 

     { 
      while(false) 
      { 
       BufferedImage image = robot.createScreenCapture(rectangle); 
       search: for(int x = 0; x < rectangle.getWidth(); x++) 
       { 
        for(int y = 0; y < rectangle.getHeight(); y++) 
        { 
         if(image.getRGB(x, y) == color3.getRGB()) 
         { 
          return true; 
         } 
        } 
       } 
      } 
     } 
     return false; 
    } 
} 

確切的錯誤是:

java:68: unreachable statement 
     { 
     ^

幫助將是很好,直到像素髮現這個代碼應該循環。

+0

肯定的代碼將不會進入循環「而(假)」(它永遠不會計算爲true,所以不會進入它)。那裏的退貨聲明是否存在問題? – 2012-02-15 22:02:53

+0

你知道雖然(false)什麼都沒做對嗎? – BeRecursive 2012-02-15 22:03:17

+0

哦不我覺得愚蠢的錯誤我在想什麼 – user1179522 2012-02-15 22:06:20

回答

6

我認爲問題是,你的循環是

while(false) { 

這個循環永遠不會執行,因爲false != true。因此,Java編譯器告訴你,循環體內的任何內容都不會執行,因此無法訪問。

試着改變你的循環,以

while (true) { 

(慣用「死循環」),看看是否能解決的事情。

希望這會有所幫助!

3

while(false)始終是false並且循環體從未執行:無法訪問。更改爲while (true)

2

聲明while(false)永遠是循環中執行任何東西,所以這實際上是所有未到達。

2

對不起,但那是一些臭的代碼。我不確定在聲明Color local vars之後大括號/塊在做什麼,並且在聲明瞭Rectangle var之後。不可達的主要問題是while(false),這意味着它永遠不會執行相關的塊。

相關問題