こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ArrayListを使った多次元配列の作成について

ArrayListで可変長配列を扱っているのですが、
2次元可変長配列を用いる必要が出てきたので、
下記のように変更したのですがうまくいきません。
何が悪いのか教えていただけませんでしょうか?

-----------------------------------------
ArrayList cars=new ArrayList();
cars.add("フェラーリ");
cars.add("ポルシェ");
cars.add("メルセデスベンツ");
for(int i=0;i<cars.size();i++){
 String str=(String)cars.get(i);
 System.out.println(str);}
-----------------------------------------
上記から下記のように変更しました。
-----------------------------------------
ArrayList[] cars=new ArrayList[3];
cars[0].add("フェラーリ");
cars[0].add("ポルシェ");
cars[0].add("メルセデスベンツ");
for(int i=0;i<cars[0].size();i++){
 String str=(String)cars[0].get(i);
 System.out.println(str);}
-----------------------------------------
エラーは「Exception in thread "main" java.lang.NullPointerException」です。
どうやら初期配列が10ではなく3となってしまっているようです。

投稿日時 - 2005-03-07 15:57:17

QNo.1255896

暇なときに回答ください

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

こんにちは。

>ArrayList[] cars=new ArrayList[3];
はArrayList型のオブジェクトのインスタンス
を格納する箱を3個作成しただけなので、
この時点では、
cars[0] = null
cars[1] = null
cars[2] = null
となっています。ですから、当然
cars[0].add("フェラーリ");
などとやると、NullPointerExceptionが
発生します。これをさけるには、
cars[0] = new ArrayList();
cars[1] = new ArrayList();
cars[2] = new ArrayList();
とする必要があります。

投稿日時 - 2005-03-07 16:39:41

お礼

返信が非常に遅れてしまい申し訳ありませんでした。
みなさんの回答、大変参考になりました。
さっそく書き直してみることにします。

argiさんの質問ですが、可変長配列×可変長配列を作ろうとしています。

投稿日時 - 2005-03-14 10:53:12

このQ&Aは役に立ちましたか?

21人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

ArrayListの配列は一個作れば充分でしょう。
下記を参考にしてください。
import java.util.*;
class Cars {
public static void main(String args[]){
ArrayList[] cars=new ArrayList[1];
cars[0]=new ArrayList();
cars[0].add("フェラーリ");
cars[0].add("ポルシェ");
cars[0].add("メルセデスベンツ");
for(int i=0;i<cars[0].size();i++){
String str=(String)cars[0].get(i);
System.out.println(str);
}
}
}

投稿日時 - 2005-03-07 23:01:28

お礼

回答ありがとうございます。
参考にさせていただきます。

投稿日時 - 2005-03-14 10:57:12

ANo.2

質問内容に質問ですが、
固定長配列×可変長配列 を作ろうとしていますか?
可変長配列×可変長配列 を作ろうとしていますか?

例外が発生している原因は#1の方の回答でOKだと思いますが、根本的にどちらなのでしょうか?

投稿日時 - 2005-03-07 17:38:22

お礼

回答の場所を間違えてました・・。
可変長配列×可変長配列を作ろうとしています。

投稿日時 - 2005-03-14 10:55:44

あなたにオススメの質問