2016-05-25 11 views
0

私はコンピュータで岩、紙、はさみを再生するプログラムを作ろうとしています。しかし、割り当ての一部は、プレイヤーにコンピュータで再生するラウンドの量を選択させることです。もしネクタイがあれば、ラウンドはゲームに数えられないはずです。forループのカウンタを例外にすることはできますか?

私のコードは次のようになります - 私は、プログラムのfor一部に、より焦点だ:

int gamePlays = 0; 

for (int = 0; i < gamePlays; i++) 
{ 
// If, else if, and else statements to make the game possible. 
// Here is an example of part of the code: 
if (cpuChoice.equals ("rock")) 
{ 
    if (userChoice.equals ("scissors")) 
    { 
     System.out.println("Rock beats scissors, computer wins."); 
    } 
    else if (userChoice.equals ("paper")) 
    { 
     System.out.println("Paper beats rock, computer wins."); 
    } 
    else 
    { 
     System.out.println("You both chose rock! It's a tie."); 
    } 
// The rest would else if cpuChoice.equals "paper" and else. 
} 

は、どのように私はそれがカウンターからネクタイの最後のelse文を除外していますか?私は数時間この問題に取り組みましたが、解決策を見つけることはできません。

+1

を – Nate

+0

を数えることになっていない円形であり、またはあなたがすることになっています合計にもう1つのラウンドを追加しますか?私はそれが重要かどうか疑問に思っていますが、あなたの課題の正確な言葉を明確にしたいだけでした。確かに、上記のネイトのコメントを見て、彼はGamePlaysについても言及しました。 – XaolingBao

答えて

3

代わりのforそれが起こる場合、私はwhile

int i = 0; 
while (i < gamePlays) 
{ 
// If, else if, and else statements to make the game possible. 
// Here is an example of part of the code: 
if (cpuChoice.equals ("rock")) 
{ 
    if (userChoice.equals ("scissors")) 
    { 
     System.out.println("Rock beats scissors, computer wins."); 
     i++; // increment only when there is result 
    } 
    else if (userChoice.equals ("paper")) 
    { 
     System.out.println("Paper beats rock, computer wins."); 
     i++; // increment only when there is result 
    } 
    else 
    { 
     System.out.println("You both chose rock! It's a tie."); 
    // don't increment if no result 
    } 
// The rest would else if cpuChoice.equals "paper" and else. 
} 

}

+0

これは良いものです。 –

+0

まず、最初の行に 'i'がありません。また、 'for'ループを' while'に変更する必要はありません。インクリメントセクションは空白のままにしておきます。 'for(int i = 0; i Andreas

+0

これは素晴らしい解決策です(whileステートメントに変更)。私はちょうど追加:i = i - 1;を終了しました。 else文の末尾にあるが、これもうまくいきました。あなたのご意見ありがとうございます。 – user6374022

1

を示唆して、ちょうどその文のため

i--; 

を置きます。その後、ラウンドは含まれませんでした。 ご質問ください。

for (int = 0; i < gamePlays; i++) 
{ 
// If, else if, and else statements to make the game possible. 
// Here is an example of part of the code: 
if (cpuChoice.equals ("rock")) 
{ 
    if (userChoice.equals ("scissors")) 
    { 
     System.out.println("Rock beats scissors, computer wins."); 
    } 
    else if (userChoice.equals ("paper")) 
    { 
     System.out.println("Paper beats rock, computer wins."); 
    } 
    else 
    { 
     System.out.println("You both chose rock! It's a tie."); 
     i--; 
    } 
// The rest would else if cpuChoice.equals "paper" and else. 
} 

これは、 'i'がループの後で増分されるため、同じままにします。

+0

あなたのコードに「i--」を追加しました –

+2

あなたはi--を必要としません。 –

+2

この回答を削除することをおすすめします。それは@AJの例外コピーです。間違ったコード行を追加した場合を除きます。 –

2

forループはループの本体で変更可能な変数iを作成します。あなたはコードが時にCPUを持つユーザーの絆カウンタをインクリメントないの効果を持たせたい場合は、あなたがそれを必要な場所、そしてiをデクリメント:

int gamePlays = 0 
for (int i = 0; i < gamePlays; i++) { 
    ... 
    else { 
    // this is where you handle ties 
    System.out.println("You tied with CPU"); 
    i--; // decrement the counter 
    } 
    ... 
} 
+0

ありがとうございました!これが私がやったことです。ソリューションがどれほどシンプルかを気づいたとき、私は自分自身を蹴っていました!ありがとうございました。 – user6374022

0

まず、あなたのメッセージを、それは間違っています。ときcpuChoice.equals("rock")userChoice.equals("paper")、正しいメッセージは次のとおりです。

紙は岩、プレーヤー勝利を打ちます。

また、gamePlays = 0の場合、ゲームはありません。 ;-)

あなたはおそらくあまりにもスコアを維持したいので、ちょうどスコアを使用します。--i、または++ gamePlaysどちらか

int cpuWins = 0; 
int userWins = 0; 
while (cpuWins + userWins < gamePlays) { 
    if (cpuChoice.equals("rock")) { 
     if (userChoice.equals("scissors")) { 
      System.out.println("Rock beats scissors, computer wins."); 
      cpuWins++; 
     } else if (userChoice.equals("paper")) { 
      System.out.println("Paper beats rock, player wins."); 
      userWins++; 
     } else { 
      System.out.println("You both chose rock! It's a tie."); 
     } 
    } else ... 
     ... 
    } 
} 
if (cpuWins > userWins) 
    System.out.println("Computer is champion."); 
else if (cpuWins < userWins) 
    System.out.println("Player is champion."); 
else 
    System.out.println("There is no champion."); 
関連する問題