0

nullポインタ例外エラーが発生しましたが、何が問題なのかわかりません。

public static void main(String[] args) {
    CDlist CD[] = new CDlist[5];
    CD[0].add();
}

これが私のメインで、非常に単純です。5つのCDオブジェクトを作成し、最初のオブジェクトのaddメソッドを呼び出すだけです。

public boolean add(){
    String author;
    String title;
    String songTitle;
    int amount;
    boolean result = false;
    if(numUsed < length){
        System.out.println("Please input the name of the CD you wish to add.");
        title = input.next();
        CD[numUsed].title = title;
        System.out.println("Please input the author of the CD you wish to add.");
        author = input.next();
        CD[numUsed].title = title;
        System.out.println("Please input the amount of songs you want to have.");
        amount = input.nextInt();
        for(int i = 0; i<amount; i++){
            System.out.println("Add song name:");
            songTitle = input.next();
            CD[numUsed].song[amount] = songTitle;
        }
        numUsed++;
        result = true;
    }
    return result;
}

これはCDlistクラスの私のaddメソッドです

4

2 に答える 2

1

プローブは

 CD[0].add();

CD[0]Java配列の動作方法により、nullになります。

CDlist CD[] = new CDlist[5];

これにより、配列newが割り当てられますCDListが、リストにはnullエントリが入力されます。有効なオブジェクトを含めるには、手動で入力する必要があります。

CDlist CD[] = new CDlist[5];
for(int i =0; i < 5; i++)
{
    CD[i] = new CDList(); //or other constructor, or other way of getting CD object
}

これを行わないと、配列には何も含まれずnull、メソッドを呼び出そうとすると、呼び出そうとしているオブジェクトが存在しないため、メソッドを呼び出そうとして失敗します。

于 2013-03-14T01:17:29.617 に答える
0

CDアレイを印刷すると、次のようになります。

null、null、null、null、null

サイズ5の配列を作成しましたが、C ++とは異なり、デフォルトのコンストラクターを呼び出しません。それらすべてを初期化する必要があります。

于 2013-03-14T01:17:07.917 に答える