如何循环再次获取输入 - Java

时间:2017-04-29 00:08:08

标签: java loops

我正在创建一个二十一的游戏,我一直坚持如何实现循环。我想要做的是介绍游戏(“欢迎来到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();
        }


} 
}

2 个答案:

答案 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);
    }