NullPointerException when working with arrays

后端 未结 3 537
感情败类
感情败类 2021-01-14 22:41

I am trying to create a program for an online Java course. This program includes an Employee class and a Name class. I have to create multiple Employee objects and prompt th

相关标签:
3条回答
  • 2021-01-14 22:58
     employee[ j ] = new Employee();
    employee[ j ].setFirstName( nameF );
    
    0 讨论(0)
  • 2021-01-14 23:11

    You're not creating any Employee objects. Creating the array doesn't create any Employee objects - the array doesn't contain objects, it contains references, and initially all those references are null. You just need:

    employee[j] = new Employee();
    employee[j].setFirstName(nameF);
    

    It's worth being very clear about the differences between objects and references - it affects all aspects of the language, from default values, to the assignment operator, to parameter passing, to garbage collection. It can be particularly confusing if you've come from a C++ background, I believe.

    0 讨论(0)
  • 2021-01-14 23:16

    You created a new array with a size of numEmp, but the default value for each element is null. This means that the array initially contains numEmp null references. You need to use new to instantiate each Employee object before you can call methods on them.

    You can either do this immediately after you create the array:

    Employee employee[] = new Employee [ numEmp ];
    for( int j = 0; j < numEmp; j++ )
    {
        employee[j] = new Employee();
    }
    

    Or you could do it inside your existing loop, just before you first need to use the object:

    employee[j] = new Employee();
    employee[j].setFirstName(nameF);
    
    0 讨论(0)
提交回复
热议问题