【发布时间】:2020-10-17 04:08:37
【问题描述】:
我对这段代码感到很沮丧。目标是创建一个石头剪刀布游戏,最好的 3。我试图制作一个“while”循环,但我错了,最后把它报废回到我开始的那个,一个非循环代码.
如果有人能告诉我如何让它循环直到计算机或玩家获得 3 胜,我将不胜感激!!太感谢了 对不起,我应该澄清一下,它需要循环直到用户或计算机获得 3 胜,所以他们重新战斗直到用户或计算机达到 3 胜
import java.util.Scanner;
import java.util.Random;
public class RockPaperScissors
{
public static void main(String[] args)
{
Scanner key;
Random randGen;
char userChoice, computerChoice;
int winner, compInt;
int computerScore;
int userScore;
int scoreCounter;
/***** INITIALIZATION SECTION *****/
key = new Scanner(System.in);
randGen = new Random();
userChoice = ' ';
computerChoice = ' ';
//winner = -1;
compInt = -1;
computerScore = 0;
userScore = 0;
scoreCounter = 0;
System.out.println("What is your name?");
String name = key.nextLine();
System.out.println(name + " play rock, paper, or scissors with me!!");
/***** INPUT SECTION *****/
System.out.println("Please enter R for rock, P for paper, or S for scissors:");
userChoice = key.next().toUpperCase().charAt(0);
//key.close();
/***** PROCESSING SECTION *****/
compInt=randGen.nextInt(3);
if (compInt == 0)
{
computerChoice = 'R';
}
else if (compInt == 1)
{
computerChoice = 'P';
}
else if (compInt == 2)
{
computerChoice = 'S';
}
winner = RockPaperScissors.decideWinner(userChoice,computerChoice);
/***** OUTPUT SECTION *****/
System.out.printf("Player: %c%nComputer: %c%n", userChoice, computerChoice);
switch (winner)
{
case 0:
System.out.println("It's a tie!");
System.out.println(name + ": " + userScore + ", Computer:" + computerScore );
break;
case 1:
System.out.println("You won!");
userScore++;
System.out.println(name + ": " + userScore + ", Computer:" + computerScore );
break;
case 2:
System.out.println("Computer won!");
computerScore++;
System.out.println(name + ": " + userScore + ", Computer:" + computerScore );
break;
default:
System.out.println("Invalid choice, try again.");
break;
}
//System.out.println("Thanks for playing!);
}
/***** STATIC METHODS *****/
/**Description: given two characters (R,P, or S) determines winner using rock
* paper rules. Assume input is valid and error checking is done in main
* programme. **/
public static int decideWinner(char p1,char p2)
{
String combo;
combo = String.format("%c%c", p1, p2);
switch(combo)
{
case "RS":
case "PR":
case "SP":
return 1;
case "RP":
case "PS":
case "SR":
return 2;
case "RR":
case "PP":
case "SS":
return 0;
}
return -1;
}
}
/***************************************************
while(userScore == 3)
{
System.out.println("You won the game" +name+ "! Congratulations");
scoreCounter++;
}
while(computerScore == 3)
{
System.out.println("Sorry " +name+ ", Computer won...");
scoreCounter++;
}
**************************************************/
【问题讨论】:
-
我在想,如果你想使用 while 循环,你只需要跟踪每个人有多少胜利然后 while ( (playerWins + computerWins) .
-
@OmarAbdelBari 如果是 3 个中最好的,他只需要记录已经玩了多少轮。很简单:
while (rounds < 3) {//code}. -
嗨,欢迎来到堆栈溢出。如果我的回答解决了您的问题,请将其标记为已接受 :)
-
@M0e 这不完全正确,如果一轮是平局,则不计入满足条件。 3 中最好的 2 意味着 2 胜。如果有 1 或 3 个平局,谁会赢?
-
但这也提出了另一点,如果一个玩家获得 2 胜,那么从技术上讲,它可以在 2 个非平局回合中结束。所以我想更准确的是 while (playerWins
标签: java for-loop while-loop do-while