无法创建对象数组

时间:2015-11-09 01:32:17

标签: java

嘿伙计们我试图回到java。几年前在高中上过一堂课。现在我正在处理一个小项目,我想使用一个对象数组,但我在初始化对象时遇到了问题。这就是我现在所拥有的。

import java.util.Scanner;
public class Test{
  public static void main(String args[]){
    Scanner s=new Scanner(System.in);
    System.out.println("Welcome to Test. What is your name");
    String ans=s.nextLine();
    User[] people=new User[10];
    people[1].initializeUser(ans);
    people[1].printName();
  }
}

我尝试初始化用户时出现运行时错误。 "线程中的异常" main"显示java.lang.NullPointerException" 这是“用户”类的代码,如果它有用的话。

public class User{
   public String name;
   public User(String x){
      name=x;
   }
   public User intitializeUser(String x){
      User y=new User(x);
      return y;
   }
}

只是一个与课程有关的快速问题..我应该何时使用私人而非公开?我什么时候应该为方法和变量使用静态?谢谢,伙计们

2 个答案:

答案 0 :(得分:0)

在Java中创建数组时,它使用空值进行初始化。当您尝试访问存储在索引1处的用户时,该数组返回存储的null,并且您将获得异常。

您需要先初始化每个元素,然后才能使用它们。

答案 1 :(得分:0)

关于以下语句,人们已被实例化为数组,但人[0],人[1],...,人[9]尚未实例化,因此它们为空。

User[] people=new User[10];
people[1].initializeUser(ans);
people[1].printName();

我认为你应该做的是将initializeUser声明为static:

public static User intitializeUser(String x) {
    User y = new User(x);
    return y;
}

然后,您可以使用以下方法之一实例化人员[1]:

people[1] = new User("Name"); // use constructor
people[1] = User.intitializeUser("Name"); // use static method