我正在学习一系列记录和锻炼问题。但是我得到了这个错误回复
线程中的异常" 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()中循环。 提前谢谢。
答案 0 :(得分:1)
每个NullPointerException都是重复的。这意味着您没有初始化对象。
此代码中存在两个问题。
if( n >= 0 && n <= 100){
错误,因为100的n将抛出IndexOutOfBoundsException。
虽然已分配Employees[]
数组,但始终未创建任何Employee对象。 (错误的循环计数器)。
(注意:不确定为什么代码格式化不起作用)
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: ");
...
}