我正在创建一个二十一的游戏,我一直坚持如何实现循环。我想要做的是介绍游戏(“欢迎来到21!”),要求玩家通过键入y来掷骰子,然后给他们掷骰子的值。然后,我想循环回来,让他们第二次掷骰子,要求他们输入y。如果他们没有输入'y',我想要一条消息,告诉他们必须输入y才能玩游戏。基本上,他们会继续被问到他们是否想玩,直到他们按下y。
到目前为止,这是我的代码。我遇到的问题是如果用户按下'm'而不是'y',它会告诉他们“输入y来玩游戏”,但是如果用户在此之后按下y,它将继续告诉他们他们必须按y(即使他们已经第二次这样做了)。
import java.util.Scanner;
import java.util.Random;
public class TwentyOne {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Welcome to 21!");
System.out.print("Roll the dice, y/n?: ");
String roll1 = input.nextLine();
while (true) {
if(roll1.equals("Y") || roll1.equals("y")) {
int die1 = (int) (Math.random() * 6) + 1;
int die2 = (int) (Math.random() * 6) + 1;
int sum1 = die1 + die2;
System.out.println("Your dice rolled a sum of: " + sum1);
break;
}
else {
System.out.println("Please press 'y' to roll the dice and play. ");
String rollError = input.nextLine();
}
}
}
答案 0 :(得分:0)
您已将第二个输入分配给rollError
String rollError = input.nextLine();
,而不是使用它来检查新用户输入if(roll1.equals("Y") || roll1.equals("y"))
。将String rollError = input.nextLine();
更改为roll1 = input.nextLine();
答案 1 :(得分:0)
这里的这个将无限地提示用户输入新的卷(所有这些都是通过按下" y",同时注意equalsIgnoreCase()),因为这是你所描述的需要。但如果您需要一个游戏结束,请不要忘记关闭(input.close())Scanner对象以防止泄漏。
Scanner input = new Scanner(System.in);
System.out.println("Welcome to 21!");
boolean isYPressed = false;
String roll1 = "";
while (true) {
System.out.print("Roll the dice, y/n?: ");
roll1 = input.nextLine();
isYPressed = roll1.equalsIgnoreCase("y");
while (!isYPressed) {
System.out.println("Please press the Y key");
roll1 = input.nextLine();
isYPressed = roll1.equalsIgnoreCase("y");
}
int die1 = (int) (Math.random() * 6) + 1;
int die2 = (int) (Math.random() * 6) + 1;
int sum1 = die1 + die2;
System.out.println("Your dice rolled a sum of: " + sum1);
}