-1

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。将值输入数组的正确语法是什么?上面的语法正确吗?

4

2 回答 2

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()));
}
于 2012-02-03T16:15:45.853 回答
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());
    }
}
于 2012-02-04T12:11:02.447 回答