线程" main"中的例外情况java.lang.NullPointerException - JAVA记录数组

时间:2016-04-19 00:20:23

标签: java arrays

我正在学习一系列记录和锻炼问题。但是我得到了这个错误回复

  

线程中的异常" main"显示java.lang.NullPointerException

这是我的代码

import java.util.Scanner;

public class Employees {

public static Scanner sc = new Scanner(System.in);
int n;
int id, salary;
String name, group;

Employees[] employees = new Employees[100];

void initializing_array(){
    System.out.print("Number of Data: ");
    n = sc.nextInt();

    if( n >= 0 && n <= 100){
        for(int i=0; i <= n; i++){
            System.out.print("ID: ");
            employees[i].id = sc.nextInt();
            System.out.print("Name: ");
            employees[i].name = sc.nextLine();
            System.out.print("Group: ");
            employees[i].group = sc.nextLine();
            System.out.print("Salary: ");
            employees[i].salary = sc.nextInt();


        }
    }else{
        System.out.println("==========");
    }
}

void output_array(){
    for(int i=0; i < n; i++){
            System.out.println("ID: "+employees[i].id);
            System.out.println("Name: "+employees[i].name);
            System.out.println("Group: "+employees[i].group);
            System.out.println("Salary: "+employees[i].salary);

    }
}

public static void main(String[] args) {
    Employees emp = new Employees();

    emp.initializing_array();
    emp.output_array();
}

}

当我输入一些数据时,错误是在initializing_array()中循环。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

每个NullPointerException都是重复的。这意味着您没有初始化对象。

此代码中存在两个问题。

  1. if( n >= 0 && n <= 100){错误,因为100的n将抛出IndexOutOfBoundsException。

  2. 虽然已分配Employees[]数组,但始终未创建任何Employee对象。 (错误的循环计数器)。

  3. (注意:不确定为什么代码格式化不起作用)

    for (int i = 0; i < n; ++i) {  
      employees[i] = new Employee();  //<-- ADD THIS LINE  
      System.out.print("ID: ");  
      employees[i].id = sc.nextInt();  
      System.out.print("Name: ");  
      ...  
    }