当我尝试将一些值添加到另一个类的引用类时,我得到一个nullPointerException

时间:2013-10-12 06:18:58

标签: java nullpointerexception

我是c#程序员,我习惯于c#的封装和其他东西的语法。但是现在,由于某些原因,我应该用java写一些东西,我现在正在练习java一天!我要创建一个我自己的虚拟项目,以使自己更熟悉java的oop概念

我想要做的是我想要一个名为'Employee'的类,它有三个属性(字段):firstNamelastNameid。然后我想要创建另一个名为EmployeeArray的类,它将在其自身内构造一个Employee的数组,并可以对它执行一些操作(出于某些原因,我希望这个项目以这种方式!) 现在我想在Employee类中为EmployeeArray添加一些值。到目前为止我的工作是:

//this is the class for Employee
public class Employee {
private String firstName;
private String lastName;
private int id;
public void SetValues(String firstName, String lastName, int id) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.id = id;
}

//this is the EmployeeArray class
public class EmployeeArray {
private int numOfItems;
private Employee[] employee;

public EmployeeArray(int maxNumOfEmployees) {
    employee = new Employee[maxNumOfEmployees];
    numOfItems = 0;
}

public void InsertNewEmployee(String firstName, String lastName, int id){
    try {
        employee[numOfItems].SetValues(firstName, lastName, id);
        numOfItems++;
    }
    catch (Exception e) {
        System.out.println(e.toString());
    }

}

//and this is the app's main method
Scanner input = new Scanner(System.in);
EmployeeArray employeeArray;
employeeArray = new EmployeeArray(input.nextInt());

String firstName;
String lastName;
int id;

firstName = input.nextLine();
lastName = input.nextLine();
id = input.nextInt();

employeeArray.InsertNewEmployee(firstName, lastName, id);

问题是当应用想要设置值时我得到一个nullPointerException,它发生在employeeArray引用中。我不知道我错过了什么。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

  

“我是c#程序员,我习惯于使用c#的封装语法   和其他东西。“

好。然后你应该感觉到家里有Java :)。

  

“问题是,当应用程序要设置时,我会收到nullPointerException   值“。

在C#中,如果你有一个对象数组,那么你必须首先分配数组......然后你 ALSO 需要“新”你在数组中PUT的任何对象。不是吗?

在Java中相同:)

建议更改:

1)丢失你的“SetNewValues()”函数。

2)确保“Employee”有一个接受名字,姓氏和id的构造函数。

3)更改“插入”方法:

public void InsertNewEmployee(String firstName, String lastName, int id){
    try {
        employee[numOfItems] = new Employee(firstName, lastName, id);
        numOfItems++;
    }
    catch (Exception e) {
        System.out.println(e.toString());
    }

答案 1 :(得分:1)

您没有制作员工对象

这样做:

public void InsertNewEmployee(String firstName, String lastName, int id){
try {
    employee[numOfItems]=new Employee();
    employee[numOfItems].SetValues(firstName, lastName, id);
    numOfItems++;
}
catch (Exception e) {
    e.printStackTrace();
}

}