2013-10-20 2 views
0

NullPointerExceptions과 관련된 두 가지 오류가 발생했습니다. 관련이 있다고 상상하므로 salaryEmployee에서 직원을 추가하려고 할 때 게시 할 것입니다. 목적. java.lang.NullPointerException이 발생 함

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) 
EmployeeDriver.java

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]); 
     } 
    } 

:

내가 받고있어 오류가3210
+3

stacktrace 및 [짧은 자체 포함 컴파일 가능 예제] (http://sscce.org/) – Reimeus

+0

** 스택 추적 **을 포함하여 ** 전체 ** 예외 텍스트를 게시하십시오. –

답변

1

이 의미는 배열의 하나 이상의 항목이 null임을 의미합니다. 나는 그 이유에 대해 충분한 정보가 없기 때문에 그 이유를 모른다. 그러나 모든 코드를 게시 할 수 있다면 그것을 알아 내고 잘못 된 것을 말할 수 있습니다.

관련 문제