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 the user to enter the employee's name. I am storing all the Employee objects in an employee array.
Here's the code:
//Creates employee array with the number of array elements being however many
//employees there are:
Employee employee[] = new Employee [ numEmp ];
for( int j = 0; j < numEmp; j++ )
{
System.out.println( "Please enter the first name of employee number "
+ ( j + 1 ) );
Scanner input2 = new Scanner( System.in );
String nameF = input2.nextLine();
//This should set the employee object at employee array element "j" to the
//String nameF
employee[ j ].setFirstName( nameF );
The problem is that the compiler, while running the program, says that the last line is a NullPointerException. I'm not sure what I am doing wrong. Any suggestions?
Thanks! -Sean
You're not creating any
Employee
objects. Creating the array doesn't create anyEmployee
objects - the array doesn't contain objects, it contains references, and initially all those references are null. You just need: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.
You created a new array with a size of
numEmp
, but the default value for each element isnull
. This means that the array initially containsnumEmp
null references. You need to usenew
to instantiate each Employee object before you can call methods on them.You can either do this immediately after you create the array:
Or you could do it inside your existing loop, just before you first need to use the object: