2012-02-15 40 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),这意味着它永远不会执行相关的块。

相关问题