2016-05-25 7 views
0

Ich versuche ein Programm zu machen, Rock, Papier, Schere mit einem Computer zu spielen. Ein Teil der Aufgabe besteht darin, dass der Spieler die Anzahl der Runden wählt, die er mit dem Computer spielen möchte. Wenn es ein Unentschieden gibt, darf die Runde nicht auf das Spiel zählen.Kann ich eine Ausnahme für den Zähler in einer for-Schleife machen?

sieht mein Code wie diesen - ich bin mehr auf dem for Teil des Programms:

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. 
} 

Wie schließe ich die letzte else Aussage, wenn es eine Krawatte aus dem Zähler ist? Ich habe ein paar Stunden damit gerungen und kann keine Lösungen finden.

+1

Entweder --i oder ++ Gameplays – Nate

+0

die Runde nicht zählen soll, oder sollen Sie fügen Sie dem Ganzen eine weitere Runde hinzu? Ich frage mich, ob das wichtig ist, aber ich wollte nur die genauen Worte deiner Aufgabe klären. Zugegeben, nachdem ich Nates Kommentar oben gelesen habe, erwähnte er auch GamePlays. – XaolingBao

Antwort

3

Statt for Ich schlage vor, 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

Das ist ein guter. –

+0

Zuerst fehlt das "i" in der ersten Zeile. Außerdem müssen Sie 'for' loop nicht in 'while' ändern, lassen Sie einfach den increment-Bereich leer:' for (int i = 0; i Andreas

+0

Dies ist eine großartige Lösung (ändern Sie es in eine while-Anweisung). Ich habe am Ende nur hinzugefügt: i = i - 1 ;. am ende der else statements, aber das hätte auch funktioniert. Danke für deinen Beitrag. – user6374022

1

wenn das passiert, hat gerade

i--; 

für diese Aussage. Dann wäre die Runde nicht enthalten. Für Ihre Frage.

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. 
} 

Dadurch wird das ‚i‘ gleich bleiben, da Ihr ‚Ich‘ wird nach der Schleife erhöht werden.

+0

yep, ich habe die 'i--' zu Ihrem Code hinzugefügt –

+2

Sie brauchen nicht die i--; –

+2

Ich würde empfehlen, diese Antwort zu löschen.Es ist eine Ausnahme von @AJ. außer du hast eine falsche Codezeile hinzugefügt. –

2

Ihre for Schleife erstellt eine Variable i, die Sie im Körper der for Schleife ändern können. Wenn Sie wollen, dass der Code, um die Wirkung von nicht haben den Zähler erhöht wird, wenn die Benutzer Verbindungen mit der CPU, dann i verringern, wo Sie sie brauchen:

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

Danke geoff! Das ist, was ich getan habe. Als ich realisierte, wie einfach die Lösung war, trat ich mich selbst! Vielen Dank. – user6374022

0

Zuerst Ihre Nachricht falsch es. Wenn cpuChoice.equals("rock") und userChoice.equals("paper"), dann richtige Nachricht ist:

Papier schlägt Stein, Spieler gewinnt.

Auch, wenn gamePlays = 0, wird es kein Spiel geben. ;-)

Da Sie wollen wahrscheinlich auch Punktzahl zu halten, nur die Noten verwenden:

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.");