我遇到两个与NullPointerExceptions相关的错误,我想它们是相关的所以当我试图从salaryEmployee对象中添加一个雇员时,我将发布我正在收到的那个。
这是我收到的错误:
Exception in thread "main" java.lang.NullPointerException
at EmployeeList.getIndex(EmployeeList.java:40)
at EmployeeDriver.main(EmployeeDriver.java:99)
EmployeeList.java
public class EmployeeList
{
private final int EMPLOYEES_MAX = 50;
private Employee[] employees = new Employee[EMPLOYEES_MAX];
private int currentEmployees;
public EmployeeList()
{
employees = new Employee[EMPLOYEES_MAX];
currentEmployees = 0;
}
public int getIndex( int empNum )
{
int index = -1;
for(int i = 0; i < currentEmployees; i++)
{
if(employees[i].getEmployeeNumber() == empNum) *error here (line 40)*
{
index = i;
i = 51;
}
else
{
index = -1;
}
}
return index;
}
public void listAll()
{
for(int i = 0; i < currentEmployees; i++)
{
System.out.println(employees[i]);
}
}
EmployeeDriver.java
do {
// Display all current employees in the list
empMgr.listAll();
//Run the main menu to display options, read, validate and return the user's choice
System.out.println("Main Menu");
mainInput = mainMenu.runMenu();
//Perform the Main Menu action requested by the user
switch(mainInput) {
//Add Employee main menu option
case 1:
// declare temporary variables for user input of employee values
String fName, lname;
char mid, gender, f;
boolean ft = true;
double amount;
// get the employee type
do {
System.out.println("\n1. Hourly");
System.out.println("2. Salary");
System.out.println("3. Commission");
System.out.print ("Enter Choice: ");
empType = in.nextInt();
if (empType < 1 || empType > 3) {
System.out.println ("Invalid Choice. Try Again!");
}
}while (empType < 1 || empType > 3);
System.out.print("Enter Last Name: ");
lname = in.next();
System.out.print("Enter First Name: ");
fName = in.next();
System.out.print("Enter Middle Initial: ");
mid = in.next().charAt(0);
System.out.print("Enter Gender: ");
gender = in.next().charAt(0);
// ask for employee number
// search employee list for existing employee with that number
// if number already exists, display an error message
int en_index = -1;
do {
System.out.print("Enter Employee Number: ");
empNum = in.nextInt();
// if empNum in range then check employee list to determine if
// employee number already exists
if (empNum >= 1 && empNum <= 99999) {
error en_index = empMgr.getIndex(empNum); *error here ( line 99 )*
if (en_index != -1)
System.out.println ("Employee number already used - Choose a new number");
}
else
System.out.println ("Employee number must be between 1 and 99999 inclusive");
}while (en_index != -1 || (empNum < 1 || empNum > 99999));
// determine if employee is a full time employee
System.out.print("Full Time? (y/n): ");
f = in.next().charAt(0);
if(f == 'n' || f == 'N') {
ft = false;
}
程序运行
java EmployeeDriver
Main Menu
Choose from the following options:
1 Add Employee
2 Process Employees by Type Submenu
3 Remove Employee
4 Sort Employees
5 Calculate Weekly Payout
6 Calculate Bonus
7 Annual Raises
8 Reset Week
0 Quit
Option: 1
1. Hourly
2. Salary
3. Commission
Enter Choice: 1
Enter Last Name: Johnson
Enter First Name: John
Enter Middle Initial: J
Enter Gender: M
Enter Employee Number: 100
Full Time? (y/n): y
Enter wage: 9.00
Employee Added to List
null
Main Menu
Choose from the following options:
1 Add Employee
2 Process Employees by Type Submenu
3 Remove Employee
4 Sort Employees
5 Calculate Weekly Payout
6 Calculate Bonus
7 Annual Raises
8 Reset Week
0 Quit
Option: 1
1. Hourly
2. Salary
3. Commission
Enter Choice: 2
Enter Last Name: Jone
Enter First Name: Johan
Enter Middle Initial: L
Enter Gender: M
Enter Employee Number: 101
Exception in thread "main" java.lang.NullPointerException
at EmployeeList.getIndex(EmployeeList.java:40)
at EmployeeDriver.main(EmployeeDriver.java:99)
答案 0 :(得分:1)
这实际意味着employees
数组中的一个或多个条目是null
。我不知道为什么,因为问题中没有足够的信息。但是,如果你可以发布所有代码,我可以弄清楚并告诉你出了什么问题。