2012-02-15 12 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

確かに、コードは 'while(false)'というループに入りません(本当に評価されることはないので、入力しません)。問題の中のリターン・ステートメントは問題ですか? –

+0

while(false)は何も正しくありません。 – BeRecursive

+0

ああ私は思って何が愚かな虚偽を感じていない – user1179522

答えて

6

は私がfalse != trueため、問題は、あなたのループが

while(false) { 

このループは決して実行されないことだと思います。したがって、Javaコンパイラはループの本体で実行するものは何もないので、到達できないことを伝えています。

while (true) { 

(慣用「永遠にループ」)に、あなたのループを変更してみてください、それは物事を修正するかどうかを確認します。

希望すると便利です。

3

while(false)は常にfalseであり、ループ本体は実行されません。到達不能while (true)に変更してください。

2

ステートメントwhile(false)はループ内で何も実行しないため、すべて到達不能です。

2

申し訳ありませんが、それはいくつかの臭いのコードです。あなたのColorローカル変数を宣言した後、およびRectangle varを宣言した後で、中括弧/ブロックが何をしているのか分かりません。到達不能の主な問題はwhile(false)です。つまり、関連ブロックを実行することはありません。

関連する問題