我不确定我在这里做错了什么。我是Java编程的新手。
我的目标是让4名玩家输入他们的名字和游戏分数,然后按降序或分数返回姓名和分数。
我创建了一个带有播放器的类。然后制作一个动态变量来改变我制作的对象数量。
我要求用户名,然后是分数,但那是我遇到的问题。该程序编译良好,但它告诉我这个。 "播放器#1的名称是什么?线程中的例外"主"显示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
}
答案 0 :(得分:2)
初始化引用类型数组时:
Player[] playersArray = new Player[allPlayers];
数组的所有元素都初始化为null
。
您忘记初始化playersArray[i]
。
添加
playersArray[i] = new Player();
前
playersArray[i].name = ...
答案 1 :(得分:0)
您正在声明它但未将内存分配给对象,这就是为什么要获得NULL Pointer
异常的原因。在分配值之前,创建对象。
for(i = 0; i <allPlayers; i++){
playersArray[i] = new Player();