2013-10-12 65 views
0

我是c#程序員,我習慣了c#的封裝和其他東西的語法。但現在,由於某些原因,我應該用java編寫一些東西,我正在練習java一天吧!我將爲自己創建一個虛擬項目,以便讓自己更加熟悉java的oop概念我得到一個nullPointerException異常當我試圖添加一些值到另一個類的引用類

我想要做的是我想要一個名爲'Employee'的類有三個屬性(字段):firstNamelastNameid。然後我想創建另一個類,名爲EmployeeArray,它將在其內部構建一個Employee的數組,並且可以對它執行一些操作因爲某些原因我想這個項目這樣!!) 現在我想將EmployeeArray class.here的我的工作中的一些值添加到Employee這麼遠:

//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 reference.I不知道我缺少什麼。任何建議?

+0

的錯誤粘貼堆棧跟蹤請。 更改此行:'System.out.println(e.toString());'到'e.printStackTrace();'您可以自己調試原因。 – adam0404

回答

1

「我是c#程序員,我習慣c#的語法封裝 和其他東西。」

好。然後,你應該感覺Java在家裏很多:)。

「問題是當應用程序想要設置 值時,我得到一個nullPointerException異常」。

在C#中,如果你有對象的數組,那麼您必須先分配數組...然後你ALSO需要「新」,你的陣列中把任何物體。你不是嗎?

同在的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()); 
    } 
+0

哦,是的!現在我看到了!!我不知道爲什麼我要在EmployeeArray的構造函數中創建Employee的引用!!!謝謝 – roostaamir

1

你沒有做出Employee對象

做到這一點:

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

} 
相關問題