Java类混乱?

时间:2014-01-03 15:47:03

标签: java

我有一个名为user的类,它包含两个变量name和age。

package test;

public class user {
String name;
int age;

}

然后在我的main.java中,我正在创建该类类型的数组。

package test;
public class main {
public static void main(String[] args) {
    user[] array = new user[2];
    array[0].name = "ryan";
    array[0].age = 18;
    array[1].name ="Ryan";
    array[1].age = 17;
    for(int i = 0; i < 1; i++){
        System.out.println(array[i].name);
        System.out.println(array[i].age);
    }
    }
}

但是我得到了这个错误。

Exception in thread "main" java.lang.NullPointerException
at test.main.main(main.java:5)

任何帮助?

5 个答案:

答案 0 :(得分:2)

user[] array = new user[2];

只是数组的定义,但数组元素未初始化/为NULL。因此,访问属性或方法将导致NullPointerException。你应该在使用之前初始化数组元素,如下所示:

array[0] = new user();
array[1] = new user();

答案 1 :(得分:2)

默认情况下,引用在Java中初始化为null - JLS

  

对于所有引用类型(§4.3),默认值为null。

所以写array[0].name = "ryan";就像写null.name = "ryan";,这会导致异常

你应该初始化数组中的每个对象。另请注意Java Naming Conventions并将user更改为User

答案 2 :(得分:1)

你也需要制作“新”物品。只有阵列不够

答案 3 :(得分:1)

您只创建了两个User的地方。写:

array [0] = new User();

你的例子对你有用:

public static void main(String[] args) {
    User[] array = new User[2];

    array[0] = new User();       
    array[0].name = "ryan";
    array[0].age = 18;

    array[1] = new User(); 
    array[1].name ="Ryan";
    array[1].age = 17;

    for(int i = 0; i < array.length; i++){
        System.out.println(array[i].name);
        System.out.println(array[i].age);
    }
}

答案 4 :(得分:0)

没有对象为

指定值
 array[0].name = "ryan";

您所拥有的只是一系列变量,尚未分配任何内容。您需要先为阵列中的每个地址创建一个...

 array[0] = new user();

然后设置它的名字。

此外,类名称应为大写User,而不是user

最后,如果您逐步浏览数组,最好使用它的大小而不是硬编码的数字

for(int i = 0; i < array.length; i++)

更好的是,为每个人做一次

 for (user u : array)  //for each user in array
 {
  System.out.println(u.name);
  System.out.println(u.age);
 }