アプリ版:「スタンプのみでお礼する」機能のリリースについて

フィールドでstatic Object [][]a= new Object[80][40];と宣言したにも関わらず、以下の様な部分でエラーが発生します。

場所
a[30][k2]=(""+all);【k2は1から31、allはint型】


エラー
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 30

配列の大きさが足りないことによるエラーかと思われますが、フィールドで宣言している大きさは十分であるにも関わらずエラーが出てしまい、困っています。



このような場合、どの様にすればエラーがなくなるのでしょうか?
よろしくお願いいたします。

A 回答 (2件)

K2は本当に(絶対に)1から31の間ですか?


そのように設計していても実はアクセスしているかもですので、

a[30][k2]=(""+all);の上の行でK2の値を表示してみてください。

この回答への補足

for文を回す条件としてk2が1~31の範囲と指定しているので、多分そうだと思います。

アドバイスに従ってk2の値をSystem.out.println("k2"+k2);として表示させてみましたが、「k2:0」となってエラーが発生しており、k2が0より大きくなっていない模様です。

試しにa[30][0]=(""+333);とプログラムしてみましたが、以下の様なエラーが出てきます。

エラー
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 30

エラー箇所
a[30][0]=(""+333);

フィールドで配列の大きさを宣言して、他のところで何かの都合で大きさが変わってしまうなんてことはあるのでしょうか?

補足日時:2014/01/21 19:24
    • good
    • 0
この回答へのお礼

解決できました!
ありがとうございました!

お礼日時:2014/01/26 14:48

>java.lang.ArrayIndexOutOfBoundsException: 30



すいません。問題は30の方ですね。
80に見えて30ということはないですよね。

[30][40]とすると、0から29,0から39までなので。
    • good
    • 0

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