-1
私はコンピュータまたはプレーヤーが5ゲームで勝利した後にループを終了させようとしています。私はforループでそれをやろうとしましたが、全く止まっていません。私はデバッグしてそれを理解しようとしましたが、私は迷っています。 どこが間違っているのか理解してもらえますか?コードをより効率的にするための提案も非常に高く評価されます。なぜ私のforループは私が望むように動かないのですか?
import java.util.Scanner;
import java.util.Random;
public class RockPaperScissor {
public static void main (String [] args){
System.out.println("Lets play Rock, Paper, Scissors!");
Scanner scanner = new Scanner(System.in);
int computerwins=0;
int playerwins=0;
Random random = new Random();
for (int totalGame = 0; playerwins<=5 || computerwins<=5; ++totalGame){
int gamenumber = totalGame + 1;
System.out.print("Game " + gamenumber + ". " + "Pick one! 1 = Rock, 2 = Paper, 3 = Scissor : ");
int input = scanner.nextInt();
Random rand = new Random();
int computerResponse = rand.nextInt(3) + 1;
String compResponse = "something";
switch (computerResponse) {
case 1: compResponse = "Rock";
break;
case 2: compResponse = "Paper";
break;
case 3: compResponse = "Scissor";
break; }
String you = "something";
switch (input) {
case 1: you = "Rock";
break;
case 2: you = "Paper";
break;
case 3: you = "Scissor";
break;
}
System.out.println("You: " + you + ", Computer: " + compResponse);
if(input == computerResponse) {
System.out.println("It's a tie!"); }
else if (input == 1) {
if (computerResponse == 2) {
System.out.println("Paper eats rock. You lose!");
++computerwins; }
else if (computerResponse == 3) {
System.out.println("Rock crushes scissors. You win!");
++playerwins; } }
else if (input == 2) {
if (computerResponse == 1) {
System.out.println("Paper eats rock. You win!");
++playerwins; }
else if (computerResponse == 3) {
System.out.println("Scissor cuts paper. You lose!");
++computerwins; } }
else if (input ==3) {
if (computerResponse == 1) {
System.out.println("Rock crushes scissors. You lose!");
++computerwins; }
else if (computerResponse == 2) {
System.out.println("Scissor cuts paper. You win!");
++playerwins; } }
System.out.println("Score Now: You = " + playerwins + ", Computer = " + computerwins);
System.out.println(" "); }
if (playerwins == computerwins) {
System.out.println("Aww! It's a tie."); }
if (playerwins < computerwins) {
System.out.println("Aww! You lost!"); }
if (playerwins > computerwins) {
System.out.println("Yay! You won!");}
} }
ありがとうございました!あなたのループ終了条件のため
playerwins<=5 || computerwins<=5
で
ループ条件で '||'の代わりに '&&'を使いたいとします。それ以外の場合は、両方のプレイヤーが6勝を得るまで継続します。また、 '<='の代わりに '<'を使いたいと思っています。だから 'playerwins <5 && computerwins <5' –
あなたの状態' playerwins <= 5 || computerwins <= 5'は一度*両方の*側に5回以上の勝利がある場合にのみfalseになります。どちらかにするか、 'playerwins <= 5 && computerwins <= 5'に変更します。 – shmosel
@DavidWallaceあなたはそれをカバーする重複した質問を知っていますか?このような質問はかなり頻繁に現れるので、何度も何度も何度も答えるのではなく、それを欺瞞として閉じてしまう方がいいでしょう。 – Tom