2016-05-08 10 views
1

このコードの目的は、turtle.jpgの各ピクセルのすべてのRGB値を抽出することですが、何らかの理由でインデックス外のエラーが発生します。いくつかの助けを探して、ありがとう。あなたのコード内Java:getRGB()メソッドのインデックスが範囲外です。

int j=1; 
int i=1; 
BufferedImage img=null; //declares image 
try { 
    File sx=new File("D:/turtle.jpg"); 
    img = ImageIO.read(sx); 
    System.out.println("Reading complete."); 
} 
catch(IOException e) 
{ 
    System.out.println("Error" + e); 
} 
for(i=1;i<225;i++); 
{ 
    for(j=1;j<225;j++); 
    { 
     deh=new Color(img.getRGB(i, j)); 
     int r = deh.getRed(); 
     int g = deh.getGreen(); 
     int b = deh.getBlue(); 
     int a = deh.getAlpha(); 
     System.out.print(r + " " + g + " " + b + " " + a+" "); 
    } 
    System.out.println(); 
} 
/*} 
catch(IOException e){ 
    System.out.println("error"); 
}*/ 
+3

画像は225×225ピクセルですか? – Ownaginatious

+0

@Oneaginatious正直なところ、なぜそれに対処するには、img.getHeight()とimg.getWidth()を使用してください。モジュール性はプログラマの親友です。 –

+0

はい、私は元の投稿の中にそれを含めるべきだったと思います。また、最初のピクセルで範囲外エラーが発生します。 –

答えて

2

一つの明確な問題はここにある:

for(i=1;i<225;i++); // <-- wrong semicolon! 
{ 
    for(j=1;j<225;j++); // <-- wrong semicolon! 
    { 

セミコロンは、基本的にforループの本体を完成、したがって、内部ブロックはi==226後の二つのループが、実行され、 j==226。 2つのセミコロンを削除します。

4

ホバークラフトウナギは完全に正しいです。問題はあなたのループ変数の範囲です!

class T { 
    public static void main(String[] args) { 
     for (int i = 0; i < 5; i++) ; { 
      for (int j = 0; j < 5; j ++) ; { 
       System.out.println(i + ", " + j); 
      } 
     } 
    } 
} 

あなたは、コンパイラから以下の得ているだろう:私は再学習

T.java:5: error: cannot find symbol 
       System.out.println(i + ", " + j); 
           ^
    symbol: variable i 
    location: class T 
T.java:5: error: cannot find symbol 
       System.out.println(i + ", " + j); 
              ^
    symbol: variable j 
    location: class T 
2 errors 

レッスン:あなたが何か行っていた場合、可能な限り多くの変数のスコープを減らすために価値がある(とはなしもっと)。 1が完全に困惑しているとき

のIntelliJのような良いIDEしかしスポットこのようなエラーを助け(私はその気持ちを知っている):

enter image description here間違っセミコロンとともに enter image description here

0

は、マジックナンバーを使用していません/最大ピクセルの任意の数、専用のメソッドを使用してイメージの高さと幅を取得します。そうしないと、コードが非常に簡単に分割されます。

+0

s/Beside /その他 –

関連する問題