2016-10-23 36 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; 
    ...