2016-10-23 1 views
1

私の最初のクラスはMatchと呼ばれ、個々のサッカー/フットボールゲームを作成します。 2チームと最終スコアを選ぶことができます。 「チーム」と呼ばれる第2のクラスはもう少し進んでいます。プレイ(マッチマッチ)メソッドが呼び出されると、再生されるゲームの数は1ずつ増加します。この部分は正常に動作します。私のelse if文(goalsForThisMatch)もうまくいきます。しかし、私がTeamクラスのオブジェクトを調べると、Matchクラスで入力したのと同じ目標と目標が表示されるはずです。実際に何が起こるかは、プレイ(マッチマッチ)メソッドを押した後にTeamクラスを調べると、メソッドのほとんどが0に設定されます(再生されたメソッド(1に増分されます)と最終スコアです。だからホームチームがより多くのゴ​​ールを決めて試合に勝利したので、チームクラスのオブジェクトインスペクタのWonメソッドが1ずつ上がることになります。他の2つのメソッドが必要ですマッチクラスにリンクするチームクラスでこれらの方法は次のとおりです。マッチクラスのGoalsForを「4」と入力すると、チームクラスを検査するときに、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/)に従いません。コーデックアクション-1 35099.html)、コードを読みにくくします。クラス名ではないように、小文字で始まる変数に名前を付けてください。 –

答えて

0

私はあなたが抱えている問題は、あなたがplayメソッドを呼び出したときに、あなたのTeamクラスのフィールドが更新されていないことであると信じています。クラスを隠している、このメソッド内で定義された

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ローカル変数:

あなたは、この動作を参照してください理由は、あなたのクラスのメンバ変数を隠すplayメソッド内のローカル変数を定義しているということです

public class Team 

    private String TeamName; 
    private String ShortName; 
    private int Played; 
    private int GoalsFor; 
    ... 
関連する問題