2016-10-12 10 views
1

私の人生のために、なぜ私はここでエラーを起こしているのか理解できません。それは私が入力を入れることができますが、その後終了し、 "emp [i] .setName"で始まる行でNullPointerExceptionを解釈します。あなたはJavaで配列を作成するとき配列でNullPointer例外が発生するのはなぜですか?

String dpt, salary, name; 
    Manager[] emp = new Manager[3]; 

    for (int i=0; i<3; i++) 
    { 
     name = JOptionPane.showInputDialog("Enter Name"); 
     emp[i].setName(name); 
+0

あなたはマネージャの配列を作成しますが、配列の各要素を 'new Manager()'に決して設定しないので、 – nhouser9

+0

配列がヌルでいっぱいです... – Li357

答えて

3

、すべての要素がヌル(非プリミティブ型のためには、とにかく; int型は、例えばちょうど0になります)です。実際のオブジェクトで配列を作成する場合は、それらを作成する必要があります。一つのオプション(最も単純な)は、このようなループ内でそれらを作成することです:

String dpt, salary, name; 
Manager[] emp = new Manager[3]; 

for (int i=0; i<emp.length; i++) 
{ 
    emp[i] = new Manager(); // Create the object 
    name = JOptionPane.showInputDialog("Enter Name"); 
    emp[i].setName(name); 
} 

はまた、私はあなたの場合は大きされるようにこれがあるだけではなく、数3のforループでemp.lengthを使用することに注意してくださいマネージャ配列が変更された場合は、ArrayIndexOutOfRangeException(存在しない配列内の要素にアクセスしようとする)にはなりません。

This questionには、明らかに価値のある解答があります。

+1

'Javaで配列を作成すると、すべての要素がnullsです。プリミティブでない型に対してのみです。 – Zarwan

+0

実際、重複としてマークされた質問には、「ヌルポインタとは何か」という詳細があります。 –

+0

@ザルワン編集。文字列についてのその部分は正しいですか? – 3ocene

関連する問題