電子書籍の厳選無料作品が豊富!

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at a.main(a.java:22)

というエラーが出るのですが、原因は何でしょうか?

質問者からの補足コメント

  • うーん・・・

    ちょっといじってみたのですが、次は a.java:26: エラー: 変数 nはすでにメソッド main(String[])で定義されています
    for(int n=0;n<4;n++){;
    ^
    エラー1個 

    となってしまいます。
    ちなみに先ほどの22行目はhm[n].fd(100); です。次の補足にコードをはります。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/04/30 13:16
  • 行番号も表示しているので数え間違えはないです。エラー文とその行を照らし合わせても不備はないのですが....

    No.3の回答に寄せられた補足コメントです。 補足日時:2016/05/01 08:52

A 回答 (5件)

for(int n = 0; n < 4; n++){  ……Aここで変数nを宣言して使用している


  for(int j = 0; j < 3; j++){
    hm[n].fd(100);
    hm[n].rt(105);
  }

  for(int n=0;n<4;n++){; ……ここ(Aのforのブロック中)で再度変数nを宣言しているのは誤り
    for(int a=0;a<10;a++){
      for(int j=0;j<9;j++){
        hm[a].lt(60);
        hm[a].fd(5);
      }
  以下略


※基本的な誤りが多いですね。もう一度文法を学習しなおした方が良いと思います。
    • good
    • 0

>ちょっといじってみたのですが、



どういじったのですか?
    • good
    • 0

>ちなみに先ほどの22行目はhm[n].fd(100); です。


有り得ないです。行の数え間違いでしょう。
どうやりましたか?
この回答への補足あり
    • good
    • 0

> for(int n=0;n<4;n++){;



最後の「;」は不要では?


あとhm[]の要素は0~3までなのに、aやqがfor文の中で4以上の値になるのは変じゃないですか?
    • good
    • 0

> java.lang.ArrayIndexOutOfBounds: 4



エラーメッセージのとおりですね。
配列の添え字の指定が範囲を超えているというエラーです。
例えば、宣言は要素数4(添え字の範囲0~3)なのに、添え字として4を指定したとかです。

a.javaの22行目で発生していますので、確認してみてください。
この回答への補足あり
    • good
    • 0
この回答へのお礼

import java.awt.*;


public class a {
public static void main(String[] args){
//Color[] cl = {Color.red, Color.blue, Color.green,Color.magenta}
TurtleFrame f = new TurtleFrame();
Turtle[] hm = new Turtle[4];

for(int n = 0 ; n < 4; n++){
hm[n] = new Turtle();
f.add(hm[n]);
hm[n].rt(n*90);//kame4
}

for(int n = 0; n < 4; n++){
for(int j = 0; j < 3; j++){
hm[n].fd(100);
hm[n].rt(105);
}

for(int n=0;n<4;n++){;
for(int a=0;a<10;a++){
for(int j=0;j<9;j++){
hm[a].lt(60);
hm[a].fd(5);
}
}
for(int q=0;q<10;q++){
for(int j=0;j<9;j++){
hm[q].fd(50);
hm[q].rt(160);
}
}

}

}
}
}

お礼日時:2016/04/30 13:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!