我的 Java 项目即将完成。目标是与用户和计算机一起玩剪刀石头布游戏。计算机生成一个随机数,该数字必须与三个选择之一相关。我已经到了可以成功玩的地步,但这里有一个问题,如果平局,游戏就要重复并重新开始,否则就终止。我把它带到了它终止的地方,但不知道如何让它在平局的情况下重复整个过程。这些方法必须保持原样,但我的教授说答案是整个事情是否处于循环状态。我的问题是我应该使用哪个循环以及它应该放置在哪里?这是代码:
public class FahrDylanRockPaperScissors{
public static void main (String [] args){
String computer = computerChoice();
String user = userChoice();
determineWinner(computer, user);
}
public static String computerChoice( ){
Random rand = new Random();
int cinput = rand.nextInt(3)+ 1;
String computer = "thing";
if (cinput == 1)
computer = "Rock";
if (cinput == 2)
computer = "Paper";
if (cinput == 3)
computer = "Scissors";
return computer;
}
public static String userChoice(){
Scanner sc = new Scanner (System.in);
String user = "default";
do{
System.out.println ("Let's Play a game! Rock, Paper, Scissors!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " + "\nPlease enter either Rock, Paper, or Scissors: " + "\nGood Luck!");
user = sc.nextLine();
}
while (isValidChoice (user) == false);
return user;
}
public static boolean isValidChoice(String choice){
boolean status;
if (choice.compareTo("Rock")== 0)
status = true;
else if (choice.compareTo("Paper")== 0)
status = true;
else if (choice.compareTo("Scissors")== 0)
status = true;
else{
status = false;
System.out.println("Error! Make sure you are capitalizing your choices");
}
return status;
}
public static void determineWinner(String computer, String user){
System.out.println (" Computer Choice: " + computer);
System.out.println ("Your Choice : " + user);
if (computer.compareTo( "Rock" ) == 0 && user.compareTo ("Scissors") == 0)
System.out.println (" Computer wins! Better luck next time!");
if (computer.compareTo("Scissors")== 0 && user.compareTo("Paper") == 0)
System.out.println (" Computer wins! Better luck next time!");
if (computer.compareTo("Paper") == 0 && user.compareTo("Rock") == 0)
System.out.println (" Computer wins! Better luck next time!");
if (computer.compareTo("Rock") == 0 && user.compareTo("Paper") == 0)
System.out.println (" You win!!");
if (computer.compareTo("Scissors") == 0 && user.compareTo("Rock") == 0)
System.out.println (" You win!!");
if (computer.compareTo("Paper") == 0 && user.compareTo("Scissors") == 0)
System.out.println (" You win!!");
else if (computer.compareTo(user) == 0 )
System.out.println(" Tie! the game must be played again.");
}
}
最佳答案
您可以使用 do-while
循环,因为您的代码至少需要执行一次。
public static void main (String [] args){
boolean win = false;
do{
String computer = computerChoice();
String user = userChoice();
win = determineWinner(computer, user);
}while(!win);
}
第一次执行整个代码。然后检查谓词,如果有人赢了,do-while
会停止。但如果win
等于 false
它将再次执行。
您只需 while
即可实现相同的效果循环,或其他循环。但是因为你的代码需要至少运行一次do-while
很适合。
编辑:
您需要更改代码,以便 determineWinner
如果有人获胜 ( return true
) 或平局 ( return false
),则返回。我在发布答案时没有看到它目前没有返回类型。
获取 determineWinner
的简单方法工作方法如下。
public static boolean determineWinner(String computer, String user){
System.out.println (" Computer Choice: " + computer);
System.out.println ("Your Choice : " + user);
if (computer.compareTo( "Rock" ) == 0 && user.compareTo ("Scissors") == 0)
System.out.println (" Computer wins! Better luck next time!");
if (computer.compareTo("Scissors")== 0 && user.compareTo("Paper") == 0)
System.out.println (" Computer wins! Better luck next time!");
if (computer.compareTo("Paper") == 0 && user.compareTo("Rock") == 0)
System.out.println (" Computer wins! Better luck next time!");
if (computer.compareTo("Rock") == 0 && user.compareTo("Paper") == 0)
System.out.println (" You win!!");
if (computer.compareTo("Scissors") == 0 && user.compareTo("Rock") == 0)
System.out.println (" You win!!");
if (computer.compareTo("Paper") == 0 && user.compareTo("Scissors") == 0)
System.out.println (" You win!!");
else if (computer.compareTo(user) == 0 ){
System.out.println(" Tie! the game must be played again.");
return false;
}
return true;
}
以及您的编码风格:
使用括号 {}
是一个很好的习惯对于 if/else/for...
即使您只有一条语句,因为它提高了代码的可读性。
编辑2:
因为您无法更改某些内容,所以最简单的方法可能如下:
public static void main(String[] args){
boolean tie = true;
do{
String computer = computerChoice();
String user = userChoice();
tie = (computer.compareTo(user) == 0);
determineWinner(computer, user);
}while(tie);
}
即使determineWinner
确定获胜者,您需要它为您提供反馈。如果您无法获得反馈,只需确定您的 main
中是否存在平局。 -方法,如果你得到平局,请重复。
关于java - 需要将整个事情放在一个循环中,哪个循环最适合?我应该在哪里应用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29235807/