Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NullPointerException错误。如何初始化类?_Java - Fatal编程技术网

java.lang.NullPointerException错误。如何初始化类?

java.lang.NullPointerException错误。如何初始化类?,java,Java,我对java非常陌生,我正在尝试编写一个简单的游戏,但是我的程序“java.lang.NullPointerException”中出现了这个错误,我无法理解为什么会出现这个错误,所以我在这里发布了我的代码 public static void main(String[] args) { Scanner console = new Scanner(System.in); System.out.println("How many players?:");

我对java非常陌生,我正在尝试编写一个简单的游戏,但是我的程序“java.lang.NullPointerException”中出现了这个错误,我无法理解为什么会出现这个错误,所以我在这里发布了我的代码

    public static void main(String[] args) {
       Scanner console = new Scanner(System.in);
       System.out.println("How many players?:");
       int t = console.nextInt();
       Player p[] = new Player[t];
       for(int i=0; i<t; i++){
           System.out.println("Player " + i+1 + " enter your name:");
           p[i].player_name = console.nextLine();
           System.out.println(p[i].player_name + " Easy(1), Medium(2), Hard(3), enter one integer");
           p[i].number = console.nextInt();
           System.out.println("Player " + i+1 + "name: " + p[i].player_name + "your integer is " + p[i].number);
      }
   }

默认情况下,
Object
类型的数组元素为
null
。在尝试分配其字段之前,创建
Player
的实例

for (int i=0; i<t; i++) {
   p[i] = new Player();
   ...
}   

for(int i=0;iObject
类型的数组元素默认为
null
。在尝试分配其字段之前,请创建
Player
的实例

for (int i=0; i<t; i++) {
   p[i] = new Player();
   ...
}   

for(int i=0;i您需要首先初始化您的
p[i]
。您可以将其放在for循环的开始处循环内:

p[i] = new Player();

你需要先初始化你的
p[i]
。你可以把它放在for循环的开头,放在循环中:

p[i] = new Player();

在这里,你可以创建一个玩家数组,但是你不能用一个玩家来填充它

Player p[] = new Player[t];
首先在循环中执行此操作

p[i] = new Player(); 

在这里,你可以创建一个玩家数组,但是你不能用一个玩家来填充它

Player p[] = new Player[t];
首先在循环中执行此操作

p[i] = new Player(); 

这句话唯一的作用是

Player p[] = new Player[t];
正在为玩家对象的t引用分配内存。它不会初始化任何玩家对象,因此这些引用引用空对象,因此当您调用

p[i].player_name    

您将获得NullPointerException。

此语句唯一的作用是

Player p[] = new Player[t];
正在为玩家对象的t引用分配内存。它不会初始化任何玩家对象,因此这些引用引用空对象,因此当您调用

p[i].player_name    

您将获得NullPointerException。

您缺少for循环中新播放器对象的实例化。 当您使用:
Player p[]=new Player[t];
声明数组时,您只是在创建Player类型的数组。在循环内赋值之前,请在数组的正确位置实例化一个对象。即:

for (int i = 0; i < t; i++) {
   p[i] = new Player();
}
for(int i=0;i
for循环中缺少新播放器对象的实例化。 当您使用:
Player p[]=new Player[t];
声明数组时,您只是在创建Player类型的数组。在循环内赋值之前,请在数组的正确位置实例化一个对象。即:

for (int i = 0; i < t; i++) {
   p[i] = new Player();
}
for(int i=0;i
在循环开始时,您需要添加
p[i]=new Player();
在循环开始时,您需要添加
p[i]=new Player();