-1

私は何を間違えましたか?配列が原因だと思います。テキストを少し短くする必要があったため、行番号が正しくありません。申し訳ありません。

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

4 に答える 4

5

この行:

TeamSpieler = new Spieler[20];

20は新しいを作成せず、 に初期化された参照Spielerのみを作成します。20 Spielernull

sを回避NullPointerExceptionするには、次のことを行う必要があります

TeamSpieler[i] = new Spieler();

ごとにi

また、コーディング標準に従ってくださいJava。変数名は小文字で始める必要があります。

于 2013-04-17T14:45:59.517 に答える
1

TeamSpielerは 20 個の変数の配列を保持し、それぞれがオブジェクトを指すことができSpielerますが、いずれも指すことができません。代わりに、変数は allnullであり、これが例外の原因です。ループの先頭forに追加する必要があります。たとえば、

TeamSpieler[i] = new Spieler();
于 2013-04-17T14:46:29.547 に答える
1

20 エントリの配列を作成すると、20 エントリで埋められnullます。にアクセスするSpielerには、まずそれらを作成する必要があります。

for (int i = 0; i < TeamSpieler.size(); i++) {
    TeamSpieler[i] = new Spieler();
}
于 2013-04-17T14:47:55.163 に答える
0

配列の要素は個別に初期化する必要があります。

あなたのコードで:

 TeamSpieler = new Spieler[20];

配列をnull値で初期化します。

TeamSpieler[i].Name = team.nextLine();

Nameオブジェクトのプロパティにアクセスしnullます。

于 2013-04-17T14:49:10.300 に答える