Java 这些奇怪的错误是怎么回事

Java 这些奇怪的错误是怎么回事,java,Java,我不确定我在这里做错了什么。我对Java编程相当陌生 我的目标是让4名玩家输入他们在一场比赛中的名字和分数,然后按降序或分数返回名字和分数 我创建了一个类,有一个玩家。然后制作了一个动态变量来改变我制作的对象数量 我要求输入用户名,然后输入分数,但这就是我被卡住的地方。这个程序编译得很好,但它告诉我这一点。Player#1的名称是什么?线程“main”java.lang.NullPointerException中的异常 位于HelloWorld.main(HelloWorld.java:20)”

我不确定我在这里做错了什么。我对Java编程相当陌生

我的目标是让4名玩家输入他们在一场比赛中的名字和分数,然后按降序或分数返回名字和分数

我创建了一个类,有一个玩家。然后制作了一个动态变量来改变我制作的对象数量

我要求输入用户名,然后输入分数,但这就是我被卡住的地方。这个程序编译得很好,但它告诉我这一点。Player#1的名称是什么?线程“main”java.lang.NullPointerException中的异常
位于HelloWorld.main(HelloWorld.java:20)”

我不知道为什么会出现这个错误。有人能帮我吗

//Array
import java.util.*;

public class HelloWorld {
    public static void main(String[] args){

        Scanner input = new Scanner(System.in);
        int allPlayers;
        int index[] = new int[12];
        int i;
        System.out.print("Please enter the number of players");
        allPlayers = input.nextInt();

        Player[]  playersArray = new Player[allPlayers];

        for(i = 0; i <allPlayers; i++){
            System.out.print("What is the name of Player # " + (i+1) +"?");
            playersArray[i].name = input.nextLine();
            System.out.print("What was the score of Player # " + (i+1) + "?");
            playersArray[i].score = input.nextInt();
         }

         for(i = 0; i <allPlayers; i++){
             for(int j = 0; j <allPlayers; j++){
                 if(index[i] < playersArray[j].score){
                     index[i] = playersArray[j].score;
                 }
              }
          }
          for(i = 0; i <allPlayers; i++){
              System.out.print(playersArray[index[i]].name);
              System.out.print(playersArray[index[i]].score);
          }
    }
}
class Player {
    int score;    // players score 
    String name;  // players name
}
//数组
导入java.util.*;
公共类HelloWorld{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
国际球员;
整数索引[]=新整数[12];
int i;
系统输出打印(“请输入玩家数量”);
allPlayers=input.nextInt();
Player[]playersArray=新玩家[所有玩家];

对于(i=0;i当您初始化引用类型的数组时:

Player[]  playersArray = new Player[allPlayers];
数组的所有元素都初始化为
null

您忘记初始化
播放器阵列[i]

以前

playersArray[i].name = ...

您正在声明它,但没有将内存分配给对象,这就是为什么会得到一个
空指针
异常。在分配值之前,请创建对象

for(i = 0; i <allPlayers; i++){
            playersArray[i] = new Player();
(i=0;i)的

for(i = 0; i <allPlayers; i++){
            playersArray[i] = new Player();