我正在做分解练习。这是情况。我有一个由多个部门组成的联盟,而这些部门又由许多由球员组成的团队组成。我有一个类 LeagueStatistics ,它有一个方法 getAveAgeOfTeam ,其中团队的名称作为参数中的字符串传递。我遇到的问题是我为 Test 类中的对象设置的值在 LeagueStatistics 类中没有被识别,即使它们已在它所组成的相关类中设置。它返回的值是 0。我认为这是因为我在 LeagueStatistics 类中创建了联赛、分区等对象的新实例,但是如果我不在这里创建新实例,那么我会得到一个空指针异常。我不知道为什么它不工作,所以任何帮助表示赞赏!
public class LeagueStatistics {
private static LeagueStatistics instance;
private int numDivisions;
private int numTeams;
private double aveGoalsForDivision;
private double aveGoalsForTeam;
private double aveAgeOfTeam;
private League league=new League();
private Division division=new Division();
private Team team=new Team();
private Player player=new Player();
public LeagueStatistics() {
}
public static LeagueStatistics getInstance(){
if (instance==null){
instance=new LeagueStatistics();
}
return instance;
}
public double getAveAgeOfTeam(String teamName){
ArrayList<Team> myList = new ArrayList<Team>();
*************************************************
for (int i=0; i<division.getNumTeams();i++){
team=division.getTeamList().get(i);
if (team.equals(teamName)){
myList.add(team);
}
ArrayList<Player> myPlayerList=new ArrayList<Player>();
for (int j=0; j<myList.size(); j++){
player=team.getPlayerList().get(j);
myPlayerList.add(player);
}
int age=0;
for(int k=0; k<myPlayerList.size(); k++){
int playerAge=myPlayerList.get(k).getAge();
age+=playerAge;
}
aveAgeOfTeam=(age/myPlayerList.size());
}
return aveAgeOfTeam;
}
public class Tester {
public static void main(String[] args) {
Player player1=new Player();
player1.setAge(15);
player1.setGoals(12);
Player player2=new Player();
player2.setAge(19);
player2.setGoals(6);
Player player3=new Player();
player3.setAge(17);
player3.setGoals(9);
Player player4=new Player();
player4.setAge(10);
player4.setGoals(19);
Team team1=new Team();
team1.setTeamName("Team1");
team1.setTrophies(2);
Team team2=new Team();
team2.setTeamName("Team2");
team2.setTrophies(3);
Team team3=new Team();
team3.setTeamName("Team3");
team3.setTrophies(1);
ArrayList<Player> ListOfPlayers=new ArrayList<Player>();
ListOfPlayers.add(player1);
ListOfPlayers.add(player2);
team1.setPlayerList(ListOfPlayers);
ArrayList<Player> ListOfPlayers2=new ArrayList<Player>();
ListOfPlayers2.add(player3);
team2.setPlayerList(ListOfPlayers2);
ArrayList<Player> ListOfPlayers3=new ArrayList<Player>();
ListOfPlayers3.add(player4);
team3.setPlayerList(ListOfPlayers3);
Division division1=new Division();
division1.setDivisionName("Division1");
Division division2=new Division();
division2.setDivisionName("Division2");
ArrayList<Team> ListOfTeams=new ArrayList<Team>();
ListOfTeams.add(team1);
ListOfTeams.add(team2);
division1.setTeamList(ListOfTeams);
ArrayList<Team> ListOfTeams2=new ArrayList<Team>();
ListOfTeams2.add(team3);
division2.setTeamList(ListOfTeams2);
League league=new League();
league.setLeagueName("Premier");
ArrayList<Division> ListOfDivisions=new ArrayList<Division>();
ListOfDivisions.add(division1);
ListOfDivisions.add(division2);
league.setDivisionList(ListOfDivisions);
Double avgAge=LeagueStatistics.getInstance().getAveAgeOfTeam("Team1");
System.out.println(avgAge);
}
}