2012-02-03 57 views
-1

基本的Java - 將值傳遞給一個對象數組

public static void main(String[] args) { 
    staples[] stemp = new staples[8]; 
    int j; 

    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 

     for (j = 0; j < 8; j++) { 
      System.out.print("Enter your name : "); 
      stemp[j].setName(reader.readLine()); 

      System.out.println("Enter your age : "); 
      stemp[j].setAge(Integer.parseInt(reader.readLine())); 
     } 

     for (j = 0; j < 8; j++) { 
      System.out.print("Employee number:" + "j:" + "name:" + stemp[j].getName() + " Age:" + stemp[j].getAge()); 
     } 

     reader.close(); // VERY IMPORTANT TO CLOSE 

     System.out.println("Program ended"); 
    } catch (java.io.IOException ex) { 
     System.out.println("Error is " + ex.getMessage()); 
    } 
} 

我試圖值傳遞給它有兩個屬性,名稱和年齡的數組對象STEMP。將值輸入到數組的正確語法是什麼?上面的語法正確嗎?

+0

是否代碼編譯?如果它編譯,它在語法上是正確的。 – 2012-02-03 16:14:46

+0

線程「main」中的異常java.lang.NullPointerException \t at employee.Employee.main(Employee.java:29) Java結果:1 – 2012-02-03 16:15:20

+0

「staples」是什麼類型? – 2012-02-03 16:15:25

回答

1

您需要添加stemp[j] = new staples();,否則您將獲得NPE。

當你在Java中創建一個數組時,JVM爲你的對象分配N引用的空間,但不爲對象本身分配空間。您需要使用new運算符逐個分配這些值。

for (j=0;j<8;j++) 
{ 
    stemp[j] = new staples(); 
    System.out.print("Enter your name : "); 
    stemp[j].setName(reader.readLine()); 
    System.out.println("Enter your age : "); 
    stemp[j].setAge(Integer.parseInt(reader.readLine())); 
} 
0
public static void main(String[] args) { 
    staples[] stemp = new staples[8]; 
    int j; 

    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 

     for (j = 0; j < 8; j++) { 
      System.out.print("Enter your name : "); 
      stemp[j] = new staples(); 
      stemp[j].setName(reader.readLine()); 

      System.out.println("Enter your age : "); 
      stemp[j].setAge(Integer.parseInt(reader.readLine())); 
     } 

     for (j = 0; j < 8; j++) { 
      System.out.print("Employee number:" + "j:" + "name:" + stemp[j].getName() + " Age:" + stemp[j].getAge()); 
     } 

     reader.close(); // VERY IMPORTANT TO CLOSE 

     System.out.println("Program ended"); 
    } catch (java.io.IOException ex) { 
     System.out.println("Error is " + ex.getMessage()); 
    } 
}