• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:arraylist 二次元配列)

二次元配列の学習と拡張FOR文の使い方について

このQ&Aのポイント
  • アレイリストの二次元配列を学習していますが、普通の記述ではうまくいきません。拡張FOR文の使い方の違いを教えてください。
  • コンパイルエラーが発生しています。エラーメッセージは「java.lang.IndexOutOfBoundsException: Index: 2, Size: 2」となっています。
  • 画面表示が正しくされていないようです。出力結果を正しく表示する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

同じにはなりません。 #2を訂正して書きます for (ArrayList list4 : hai) { だと list4=hai.get(0) list4=hai.get(1) list4=hai.get(2) ... list4=hai.get(k) ... list4=hai.get(hai.size()-1) というループになります。 out.print(list4.get(i)); は out.print(hai.get(0).get(i)); out.print(hai.get(1).get(i)); out.print(hai.get(2).get(i)); ... out.print(hai.get(k).get(i)); ... out.print(hai.get(hai.size()-1).get(i)); になります。 for (int k = 0 ; k < hai.size(); k++) { out.print(hai.get(i)); } との違い、わかりますね? a=hai.get(i) としたときに、aがどんなクラスになるか考えてください。

gomadango02
質問者

お礼

for (int i = 0; i < hai.get(0).size(); i++) { %> <table border="3"> <tr> <% for (int k = 0 ; k < hai.size(); k++) { %> <td width="60"> <% out.print(hai.get(k).get(i)); } %> <br> という風にするとコンパイルでき表示することができました。 ()と[] get など組み合わせがまずかったんですね・・・ 勉強不足でした 何度もありがとうございます

その他の回答 (3)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

あ、そっか。ArrayListだから hai[X]→hai.get(X) でした。

gomadango02
質問者

お礼

そうなると一番最初にもどってしまいますよね>< やっぱりiterator使って 取得していくしかないですかね?? 拡張for文をつかうの楽なのはわかったんですが、拡張for文があまり理解できていないのに、つかっていいのかなぁ・・・と思ったのと、勉強のために for文で書きたいと思ってるんですが、

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

k<=とk<をなおした上で。 「二つのプログラムが、同じ内容ではないから」 for (ArrayList list4 : hai) { だと list4=hai[0] list4=hai[1] list4=hai[2] ... list4=hai[k] ... list4=hai[hai.size()-1] というループになります。 out.print(list4.get(i)); は out.print(hai[0].get(i)); out.print(hai[1].get(i)); out.print(hai[2].get(i)); ... out.print(hai[k].get(i)); ... out.print(hai[hai.size()-1].get(i)); になります。 for (int k = 0 ; k < hai.size(); k++) { out.print(hai.get(i)); } との違い、わかりますね?

gomadango02
質問者

お礼

ありがとうございます 勉強になりました。 よんでから作成してみました for (int i = 0; i < hai.get(0).size(); i++) { for (int k = 0 ; k < hai.size(); k++) { out.print(hai[k].get(i)); } という風にしてみたのですが・・・ エラーがでます・・・ kの値は0~sizeー1 という風にしているのですが コンパイルエラーがでます hai[k]という風にはつかえないようです。 二次元配列やアレイリストをもっと勉強しなくてはいけませんね>< アドバイスありがとうございます!! またよければアドバイスください

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

中途半端な部分が引用されているのでわかりにくいのですが、 上のソースの  for (int k = 0 ; k <= hai.size(); k++) {   ……  } は  for (int k = 0 ; k < hai.size(); k++) {   ……  } なのでは? バグがある部分をエラーメッセージから推測できるようになると さらに進歩できると思います。

gomadango02
質問者

補足

返信ありがとうございます。 そちらもためしたのですが エラー内容はかわりませんでした。 拡張for文となにが違うか模索中です・・・

専門家に質問してみよう