2016-07-24 17 views
-1

私はJavaを学習しています。私は簡単なバスケットボールのスコアキーパーアプリを構築して、今テニスのスコアボードを構築する方法を見つけようとしていました。このJavaコードでTennis Scoreboardの問題があります

チームAのゲームが6ポイントに達すると、セット2のチームAの値を更新する方法がわかりません。アップデートは、ゲームはここ6

に達したチームたら1を、それを設定しないコード

Increase points on Team A */ 
public void incrementA(View view) { 
    pointsTeamA = pointsTeamA + 1; 
     { 
      if (pointsTeamA == 1) displayA(15); 
      if (pointsTeamA == 2) displayA(30); 
      if (pointsTeamA == 3) displayA(40); 
      if (pointsTeamA == 4) displayGamesA(gameTeamA = gameTeamA + 1); 
      if (pointsTeamA == 4) displayA(pointsTeamA = 0); 
      if (gameTeamA == 6) displaySet1A(gameTeamA); 
      if (gameTeamA == 6) displayGamesA(gameTeamA = 0); 
      if (gameTeamA == 6) displaySet2A(gameTeamA); 
      if (gameTeamA == 6) displayGamesA(gameTeamA = 0); 
     } 
} 

は、これまでのところ、私の方法があります:

/*This method displays points for Team A. */ 
    private void displayA(int number) { TextView quantityTextView = (TextView) findViewById(R.id.points_team_A); 
     quantityTextView.setText("" + number); } 

    /*This method displays games for Team A */ 
    private void displayGamesA(int number) { TextView quantityTextView = (TextView) findViewById(R.id.game_score_team_A); 
     quantityTextView.setText("" + number); } 


    /*This method displays Set 1 for Team A */ 
    private void displaySet1A(int number) { TextView quantityTextView = (TextView) findViewById(R.id.set_1_team_A); 
     quantityTextView.setText("" + number); } 

    /*This method displays Set 2 for Team A */ 
    private void displaySet2A(int number) { TextView quantityTextView = (TextView) findViewById(R.id.set_2_team_A); 
     quantityTextView.setText("" + number); } 
} 

任意の助けをいただければ幸いです。

私はすべての私のint値は、プロジェクトのゼロなどint gameTeamA = 0;など

最終パートに設定されている:にプレーヤーAのために、次にために、両方のプレイヤーのスコアが40であるとき、それは「デュース」を表示します。 ゴール勝利するには、ポイント1が「ADV」を表示し、ポイント2がgameTeamAにスコアを加えてゲームを終了し、新しいゲームが始まる2つの連続ポイントを獲得する必要があります。

コードこれまで:

public void incrementA(View view) { 
    pointsTeamA++; 
    displayDeuceA(null); 
    if (pointsTeamA == 1) displayA(15); 
    if (pointsTeamA == 2) displayA(30); 
    if (pointsTeamA == 3) displayA(40); 
    if (pointsTeamA == 3 && pointsTeamB == 3) 
     displayDeuceA("Deuce"); 
    if (pointsTeamA == 4) { 
     displayGamesA(gameTeamA = gameTeamA + 1); 
     displayA(pointsTeamA = 0); 
     displayB(pointsTeamB = 0); 
     displayDeuceA(null); 
     displayDeuceB(null); 
    } 

答えて

2

それは文の代わりに、同じ文を複製し、数回の場合は複数行を作成するのに役立つかもしれません。言われて、あなたが使用した方法を提供してくれるまで、それはあなたがあなたの質問にに言及しているもの、完全に明確ではありませんので、我々は、彼らが行うことになっているかを見ることができ

public void incrementA(View view) { 
    pointsTeamA++; 
    if (pointsTeamA == 1) displayA(15); 
    if (pointsTeamA == 2) displayA(30); 
    if (pointsTeamA == 3) displayA(40); 

    if (pointsTeamA == 4) { 
     displayGamesA(gameTeamA = gameTeamA + 1); 
     displayA(pointsTeamA = 0); 
    } 
    if (gameTeamA == 6) { 
     displaySet1A(gameTeamA); 
     displayGamesA(gameTeamA = 0); 
     displaySet2A(gameTeamA); 
     displayGamesA(gameTeamA = 0); 
    } 

} 

。私が言うことから、スコアが6に達するたびにSet 1とSet 2の両方の値を更新しています。私はあなたがゲームが設定されているかどうかを追跡する整数変数と、この変数に応じてセットの値を更新するインクリメント内部のifステートメントを持つべきだと考えます。

編集:ここでは、クラス自体に静的フィールドを作成し、

まずを行うことができる方法です。

public static int set = 1; 

これはクラスの宣言の後で、メソッドの外に置いてください。

public void incrementA(View view) { 
    pointsTeamA++; 
    if (pointsTeamA == 1) displayA(15); 
    if (pointsTeamA == 2) displayA(30); 
    if (pointsTeamA == 3) displayA(40); 

    if (pointsTeamA == 4) { 
     displayGamesA(gameTeamA = gameTeamA + 1); 
     displayA(pointsTeamA = 0); 
    } 
    if (gameTeamA == 6) { 
     if (set == 1) { 
      displaySet1A(gameTeamA); 
      displayGamesA(gameTeamA = 0); 
      set++; // Adds to the set variable, making it 2 
     } else if (set == 2) { 
      displaySet2A(gameTeamA); 
      displayGamesA(gameTeamA = 0); 
     } 
    } 

} 

編集2:スコアはif文pointsTeamAの== 4

if (pointsTeamA >= 4) { 
    if (pointsTeamA - pointsTeamB >= 2) { // if team A wins 

     displayGamesA(gameTeamA = gameTeamA + 1); 
     displayA(pointsTeamA = 0); 
     displayB(pointsTeamB = 0); 
     displayDeuceA(null); 
     displayDeuceB(null); 
    } else if (pointsTeamA - pointsTeamB == 1) { // score up by one 

    // code for displaying "Advantage" 
    } else { // scores are tied 
    // code for displaying "Deuce" 
    } 
} 
+0

について以前に置き換え3を超えているときデュースを処理するため、利点は、私が質問を編集して、コメントを追加してきた勝利します私がこれまでに持っていた方法。私はあなたのロジックが正しいと信じていますが、私はそのようなコードを書くことができるとは確信していません...しかし、私は試みます! – Giri06

+0

あなたがそれ以上のアドバイスをいただければ幸いです。ありがとう! – Giri06

+0

なぜ「あなたはそのようなコードを書くことができない」という問題があるのか​​分かりません。私がしたのはあなたのコードを取り、より良いフォーマットをとることでした。まだ動作していない場合は、私に教えてください。 –

関連する問題