数组:java.lang.NullPointerException

时间:2013-04-17 14:41:40

标签: java arrays nullpointerexception

我做错了什么?我认为这是因为阵列。行号现在不正确,因为我不得不将文字缩短一点,对不起。

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();
}

4 个答案:

答案 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属性。