I'm currently taking an Introduction to Java class where we are currently on Arrays topics. We have a class lab where are suppose to create a simple array program consisting a two classes (Passenger.java
and Demo.java
). The array can be of any sizing (minimum 4) and we can hard code details into few elements.
So I declared the array in the Demo.java
with size of 10, and I initialized/hard code 8 of the elements (leaving 2 elements un-initialized) with one of the constructor in Passenger.java
. Then using a for-loop and counters I determine the number of elements is not null, and initialize the remaining element with the counter value increase by 1 (e.g. passengers[index++] = new Passenger()
).
However, when I tried to call a method after initializing the newly initialized element I got java.lang.NullPointerException
error. So I tested by called exact index which is 8 (passengers[8] = new Passenger()
) and then calling the method again, it works.
Hence may I know which part of my code is having problem.
Note:
- I cannot use ArrayList
- I have viewed this initialize all variables but still get NullPointerExceptions error
Passenger Class
import java.util.Scanner;
public class Passenger {
private String title;
private String firstName;
private String lastName;
public Passenger() {
}
public Passenger(String title, String firstName, String lastName) {
this.title = title;
this.firstName = firstName;
this.lastName = lastName;
}
public void enterDetails() {
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter your title: ")
title = keyboard.next();
System.out.print("Enter your first name: ")
firstName = keyboard.next();
System.out.print("Enter your last name: ")
lastName = keyboard.next();
}
}
Demo Class
public class Demo {
public static void main(String[] args) {
Passenger[] passengers = new Passenger[10];
passengers[0] = new Passenger("Mr", "Benjamin", "Parker");
passengers[1] = new Passenger(....);
passengers[2] = new Passenger(....);
passengers[3] = new Passenger(....);
passengers[4] = new Passenger(....);
passengers[5] = new Passenger(....);
passengers[6] = new Passenger(....);
passengers[7] = new Passenger(....);
int index = 0;
for (int i = 0; i < passengers.length; i++) {
if (passengers[i] != null)
index++;
}
passengers[index++] = new Passenger();
passengers[index].enterDetails();
}
}