2016-10-23 30 views
1

我的第一堂课称为比赛创建个人足球/足球比赛。它让你选择2支球队和最终得分。第二类叫做“团队”更高级。当比赛(比赛)方法被调用时,比赛的数量增加1.这部分工作正常。我的else语句(goalsForThisMatch)也可以正常工作。但是,当我检查Team类对象时,它应该显示与我在Match类中输入的目标相同的目标和目标。实际发生的情况是,当我在按下比赛(比赛匹配)方法后检查队伍类时,大多数方法都被设置为0,除了“玩过的”方法(按照它应该增加1)以及最终得分是。因此,如果我在比赛中输入比分以便主队获得更多目标并赢得比赛,那么Team类的对象检查器中的Won方法将增加1.我需要两种其他方法在团队类中与匹配类链接。这些方法是:目标和目标。如果我将匹配类中的GoalsFor输入为“4”,那么当我检查Team类时,goalsFor也应设置为4。如何访问不同类中的变量?

我知道这一切可能听起来很令人困惑,请原谅我,我很疲倦我即将头昏睡去。希望在早上,有人会为我解决这个问题。

public class Match 

    // instance variables - replace the example below with your own 
    private String HomeTeam; 
    private String AwayTeam; 
    private int HomeGoals; 
    private int AwayGoals; 


    /** 
    * Constructor for objects of class Match 
    */ 
    public Match(String ShortHomeTeamName, String ShortAwayTeamName, int NewHomeGoals, int NewAwayGoals) 
    { 
     // initialise instance variables 
     HomeTeam = ShortHomeTeamName; 
     AwayTeam = ShortAwayTeamName; 
     HomeGoals = NewHomeGoals; 
     AwayGoals = NewAwayGoals; 
    } 

     public String getHomeTeamName(){ 

     return HomeTeam; 
    } 

     public String getAwayTeamName(){ 

     return AwayTeam; 
    } 

     public int getHomeGoals(){ 

     return HomeGoals; 
    }  

     public int getAwayGoals(){ 

     return AwayGoals; 
    }  


} 




public class Team 

    private String TeamName; 
    private String ShortName; 
    private int Played; 
    private int GoalsFor; 
    private int GoalsAgainst; 
    private int GoalDifference; 
    private int Won; 
    private int Drawn; 
    private int Lost; 
    private int Points; 


    /** 
    * Constructor for objects of class Team 
    */ 
    public Team(String FullTeamName, String ShortTeamName) 
    { 
     // initialise instance variables 
     TeamName = FullTeamName; 
     ShortName = ShortTeamName; 
     Played = 0; 
     GoalsFor = 0; 
     GoalsAgainst = 0; 
     GoalDifference = 0; 
     Won = 0; 
     Drawn = 0; 
     Lost = 0; 
     Points = 0;  
    } 

    public String getTeamName(){ 

     return TeamName; 
    } 

    public String getShortName(){ 

     return ShortName; 
    } 

    public int getPlayed(){ 

     return Played; 
    } 

    public void getGoalsFor(int InsertGoalsFor){ 

     GoalsFor = InsertGoalsFor; 
    } 

    public void getGoalsAgainst(int InsertGoalsAgainst){ 

     GoalsAgainst = InsertGoalsAgainst; 

    } 

    public int getGoalDifference(){ 


     return (GoalsFor - GoalsAgainst); 


    } 

    public int getWon(){ 

     return Won; 
    } 

    public int getDrawn(){ 

     return Drawn; 
    } 

    public int getLost(){ 

     return Lost; 

    }  

    public int getPoints(){ 

     return Points; 

    } 

    public void play(Match match){ 

     Played++; 

     int GoalsFor = match.getHomeGoals(); 
     int goalsForThisMatch = match.getHomeGoals(); 
     int goalsAgainstThisMatch = match.getAwayGoals(); 
     String homeTeam = match.getHomeTeamName(); 
     String ShortName = match.getHomeTeamName(); 

     if (ShortName.equals(TeamName)){ 

      ShortName = homeTeam; 

     } else { 

      ShortName = match.getAwayTeamName(); 

     } 

     if (goalsForThisMatch > goalsAgainstThisMatch){ 

      Won++; 

     } 

     else if (goalsForThisMatch == goalsAgainstThisMatch){ 

      Drawn++; 

     } 

     else { 

      Lost++; 


     } 


    } 

} 
+2

代码审查项目:你在类的顶部定义的成员变量很多的变量名不按[Java命名约定](http://www.oracle.com/technetwork/java/ codeconventions-1 35099.html)这使您的代码更难以阅读。请命名以小写字母开头的变量,以使它们看起来不是类名。 –

回答

0

我相信你所遇到的问题是,你的Team类的字段,当你调用play方法不被更新。

你看到这种现象的原因是,你定义play方法隐藏类的成员变量中的局部变量:这个方法里面定义

public void play(Match match){ 
    ... 
    int GoalsFor = match.getHomeGoals(); 
    int goalsForThisMatch = match.getHomeGoals(); 
    int goalsAgainstThisMatch = match.getAwayGoals(); 
    String homeTeam = match.getHomeTeamName(); 
    String ShortName = match.getHomeTeamName(); 
    ... 

GoalsForShortName局部变量都躲在类

public class Team 

    private String TeamName; 
    private String ShortName; 
    private int Played; 
    private int GoalsFor; 
    ...