プロが教える店舗&オフィスのセキュリティ対策術

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となってしまっているようです。

A 回答 (3件)

こんにちは。



>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();
とする必要があります。
    • good
    • 3
この回答へのお礼

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

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

お礼日時:2005/03/14 10:53

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);
}
}
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/03/14 10:57

質問内容に質問ですが、


固定長配列×可変長配列 を作ろうとしていますか?
可変長配列×可変長配列 を作ろうとしていますか?

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

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

お礼日時:2005/03/14 10:55

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