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. We are supposed to create two methods for searching by the ID and name (firstname + lastname), and two methods for sorting (bubble & insertion) by the ID and surname in ascending order.
In my searching methods for both ID and name, I get java.lang.NullPointerException error when I entered a ID that does not exists in Array. It was suppose to return an error message that i have compose if it is not found.
In my sorting methods for ID, I also get java.lang.NullPointerException error after the second loop. For my sorting methods for surname, I don't know how to implement.
Hence may I know, how to solve this couple of issues with a working full code example.
Note:
- I cannot use ArrayList and any Java Arrays classes
- Please treat the Array's element 3 to 8 as initialized with values
- I have viewed this initialize all variables but still get NullPointerExceptions error, this What is a NullPointerException, and how do I fix it?, and this Array Sorting and Searching Java and lastly this Initialized elements getting NullPointerException error
Passenger.java
import java.util.Scanner;
public class Passenger {
private String title;
private String firstName;
private String lastName;
private long id;
public Passenger() {
}
public Passenger(String title, String firstName, String lastName, long id) {
this.title = title;
this.firstName = firstName;
this.lastName = lastName;
this.id = id;
}
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();
System.out.print("Enter your ID: ");
id = keyboard.nextLong();
}
public void outputDetails() {
System.out.print();
System.out.print("Passenger name: " + title + " " + firstName + " " + lastName);
System.out.print("Identify Number: " + id);
System.out.print();
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public long getId() {
return id;
}
}
Demo.java
import java.util.Scanner;
public class Demo {
public static Passenger[] passengers = new Passenger[10];
public static Scanner kb = new Scanner(System.in);
public static void main(String[] args) {
int option = 0;
passengers[0] = new Passenger("Mr", "Benjamin", "Parker", 12345678);
passengers[1] = new Passenger("Mrs", "Mary", "Long", 96421368);
passengers[2] = new Passenger(....);
passengers[3] = new Passenger(....);
passengers[4] = new Passenger(....);
passengers[5] = new Passenger(....);
passengers[6] = new Passenger(....);
passengers[7] = new Passenger(....);
while(option != 7) {
System.out.println("Please select an option:"
+ "\n1) Enter passenger particulars to array"
+ "\n2) Display passenger particulars from array"
+ "\n3) Search passenger particulars using ID"
+ "\n4) Search passenger particulars using both surname and name"
+ "\n5) Display passenger particulars in ascending order of ID"
+ "\n6) Display passenger particulars in ascending order of surname"
+ "\n7) Quit
)
option = kb.nextInt();
switch(option) {
case 1:
inputDetails();
break;
case 2:
outputDetails();
break;
case 3:
searchDetailsID();
break;
case 4:
searchDetailsName();
break;
case 5:
sortDetailsID();
break;
case 6:
sortDetailsName();
break;
case 7:
System.out.println("You quitted the program!");
break;
default:
System.out.println("Invalid input!");
break;
}
}
}
public static void inputDetails() {
int element = 0;
for (int i = 0; i < passengers.length; i++) {
if(passengers[i] != null)
element++;
}
passengers[element] = new Passenger();
passengers[element].enterDetails();
element++;
}
public static void outputDetails() {
for(int i = 0; i < passengers.length; i++) {
passengers[i].outputDetails();
}
}
public static void searchDetailsID() {
boolean isFound = false;
System.out.print("Please enter an passenger id: ");
long id = kb.nextLong();
for(int i = 0; i < passengers.length; i++) {
if(id == passengers[i].getid()) {
passengers[i].outputDetails();
isFound = true;
break;
}
}
if(!isFound) {
System.out.println("No passenger with that id!");
}
}
public static void searchDetailsName() {
boolean isFound = false;
System.out.print("Please enter an passenger first name: ");
String firstName = kb.next();
System.out.print("Please enter an passenger last name: ");
String lastName = kb.next();
for(int i = 0; i < passengers.length; i++) {
if(firstName.equalsIgnoreCase(passengers[i].getFirstName()) && lastName.equalsIgnoreCase(passengers[i].getLastName())) {
passengers[i].outputDetails();
isFound = true;
break;
}
}
if(!isFound) {
System.out.println("No passenger with that name!");
}
}
public static void sortDetailsID() {
long temp = 0;
for(int i = 0; i < passengers.length; i++) {
for(int j = 0; j < passengers.length - 1; j++) {
if(passengers[i].getId() > passengers[j].getId()) {
temp = passengers[i].getId();
passengers[i] = passengers[j];
}
}
}
}
public static void sortDetailsName() {
}
}