Java 创建对象数组时遇到问题

Java 创建对象数组时遇到问题,java,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 i

嘿,伙计们,我正试图回到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;
   }
}

还有一个关于课程的简单问题。。什么时候我应该使用私有而不是公共?我什么时候应该对方法和变量使用static?谢谢,伙计们

当你用Java创建一个数组时,它是用空值初始化的。当您试图访问存储在索引1中的用户时,数组返回存储的null,您会得到一个异常


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

关于以下语句,人员已实例化为数组,但人员[0]、人员[1]、…、人员[9]尚未实例化,因此为空

User[] people=new User[10];
people[1].initializeUser(ans);
people[1].printName();
我认为您应该将initializeUser声明为静态:

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

您创建了一个
User
s数组,但从未填充它,因此它会根据请求返回null。用户数组中的所有元素仍然为null。您需要用
people[1]=新用户(“用户名”)之类的东西初始化它们。另外,User类中的
initializeUser
方法拼写错误。它有一个额外的“t”哦。我明白我做错了什么。感谢所有回答的人