Exception in thread "main" java.lang.NullPointerException
at Team.<init>(Team.java:43)
at Team.main(Team.java:30)
代码:
public static void main(String[] args)
{
System.out.println("Dein Fußballteam in der ersten Bundesliga!");
int[] Spieler = new int[20];
int Torschützen[] = new int[10];
Team myTeam = new Team();
myTeam.einfacheNachricht();
}
public Team()
{
TeamSpieler = new Spieler[20];
Scanner team = new Scanner(System.in);
for (int i=0; i<20;i++){
System.out.println("Bitte geben Sie den Namen des Spielers " + i + " ein: ");
TeamSpieler[i].Name = team.nextLine();
System.out.println("Bitte geben Sie das Alter des Spielers " + i + " ein: ");
TeamSpieler[i].Alter = team.nextInt();
System.out.println("Bitte geben Sie die Tore des Spielers " + i + " ein: ");
TeamSpieler[i].Tore = team.nextInt();
}
System.out.println("Bitte geben Sie den Namen ihres Teams ein: ");
Teamname = team.nextLine();
team.close();
}
答案 0 :(得分:5)
这一行:
TeamSpieler = new Spieler[20];
不会创建20
个新Spieler
,它只会创建20
Spieler
个引用,初始化为null
。
要避免NullPointerException
,您需要执行
TeamSpieler[i] = new Spieler();
每个i
。
另外,请遵循Java
编码标准,变量名称应以小写字母开头。
答案 1 :(得分:1)
TeamSpieler
包含一个包含20个变量的数组,每个变量都可以指向一个Spieler
对象 - 但它们都没有。相反,变量都是null
,这是导致异常的原因。在for
循环的顶部,您需要添加,例如
TeamSpieler[i] = new Spieler();
答案 2 :(得分:1)
当您创建一个包含20个条目的数组时,它将填充20个null
个条目。在您访问Spieler
之前,首先必须创建它们。
for (int i = 0; i < TeamSpieler.size(); i++) {
TeamSpieler[i] = new Spieler();
}
答案 3 :(得分:0)
阵列的元素需要单独初始化。
在您的代码中:
TeamSpieler = new Spieler[20];
使用null
值初始化数组。
TeamSpieler[i].Name = team.nextLine();
访问Name
对象的null
属性。