Methoden NPE beim Aufruf einer Methode einer anderen Klasse

Rudi77

Mitglied
Hallo zusammen,

ich bin Anfänger, wie man Code sicher sehen kann.

Ich habe folgende Klassen geschrieben:

Code:
package de.kickit.main;

import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Main {

    public static void main (String args[]) {
       
        try {
            // Set System L&F
        UIManager.setLookAndFeel(
            UIManager.getSystemLookAndFeelClassName());
        }
        catch (UnsupportedLookAndFeelException e) {
           // handle exception
        }
        catch (ClassNotFoundException e) {
           // handle exception
        }
        catch (InstantiationException e) {
           // handle exception
        }
        catch (IllegalAccessException e) {
           // handle exception
        }

        Tournament t = new Tournament();
        t.capturePlayers();
        t.createTeams();           
       
    }
       
}

Code:
package de.kickit.main;

import java.util.ArrayList;

import javax.swing.JOptionPane;


public class Tournament {

    private int numberOfPlayers;
   
    private ArrayList<Team> teamlist = new ArrayList<Team>();

    public void capturePlayers() {
        String numberOfPl = JOptionPane.showInputDialog("Wie viele Spieler nehmen am Turnier teil");
        this.numberOfPlayers = Integer.parseInt(numberOfPl);
    }

   
   
    public int getNumberOfPlayers() {
   
        return this.numberOfPlayers;
       
    }   
   
   
   
    //Creating Teams for Tournament
    public void createTeams( ) {
       
        for (int i = 0; i < getNumberOfPlayers()/2; i++) {
            teamlist.add(new Team(i+1));
            System.out.println(teamlist);
           
        }
       
    }
   
   
   
}

Code:
package de.kickit.main;

import java.awt.List;
import java.util.ArrayList;

public class Team {

    private String name1;
    private String name2;
    private int teamID;
    private int goals_got;
    private int goals_shot;
    private ArrayList<Integer> opponents = new ArrayList<>();
    Tournament t;
   
   
    //Constructer
    public Team(int teamID) {
        defineListOfOpponents();
        this.teamID = teamID;
        opponents.remove(new Integer(teamID));
        System.out.println(opponents);
        System.out.println(teamID);
       
    }
   
   
    //Get and set Name1
    public void setName_Player1(String name) {
        this.name1 = name;
    }
   
    public String getName_Player1() {
        return this.name1;
    }

   
    //Get and set Name2
    public void setName2(String name2) {
        this.name2 = name2;
    }
   
    public String getName_PLayer2() {
        return this.name2;
    }
   
   
   
    //Creates list of opponents
    protected void defineListOfOpponents() {
       
        for (int i = 1; i <= t.getNumberOfPlayers()/2 ; i++) {
            opponents.add(new Integer (i));
           
        }
    }
       
   
   
}

Bei Kompilieren erhalte ich folgende Fehlermeldung:

Code:
Exception in thread "main" java.lang.NullPointerException
    at de.kickit.main.Team.defineListOfOpponents(Team.java:52)
    at de.kickit.main.Team.<init>(Team.java:19)
    at de.kickit.main.Tournament.createTeams(Tournament.java:33)
    at de.kickit.main.Main.main(Main.java:31)


Ich sehe leider einfach den Fehler nicht.

Danke im Voraus für die Unterstützung!
 
Davon kriegt aber deine Team-Klasse nichts mit.
Du musst die Tournament-Instanz in die Team-Klasse injecten/übergeben. (am Besten wohl über den Konstruktor).
 

Zurück
Oben