Java 扫描输入并再次启动或关闭循环

Java 扫描输入并再次启动或关闭循环,java,Java,我编了一个猜谜游戏,现在我遇到了一个问题。我想问用户,如果答案为“y”(是),他/她是否想再次玩,重新启动游戏,如果答案为“N”(否),则应结束循环 如果我输入“否”,为什么它不会结束? 有人能帮我处理这部分代码吗 我尝试过不同的方法,比如在类的外部或内部定义它等等 public class GuessingGame { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Ra

我编了一个猜谜游戏,现在我遇到了一个问题。我想问用户,如果答案为“y”(是),他/她是否想再次玩,重新启动游戏,如果答案为“N”(否),则应结束循环

如果我输入“否”,为什么它不会结束? 有人能帮我处理这部分代码吗

我尝试过不同的方法,比如在类的外部或内部定义它等等

public class GuessingGame {
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    Random rdm = new Random();// Welcome to the game

    System.out.println("Welcome!");

    // Generate random number
    int input = 0;
    do {
        int rdmNumber = rdm.nextInt(999) + 1;

        while (input != rdmNumber) {
            try {
                System.out.println("Please enter your guess:");
                int userGuess = Integer.parseInt(sc.next());
                input = userGuess;
            } catch (NumberFormatException e) {
                System.out.println("Not a number - try again!");
            }

            if (input > rdmNumber) {
                System.out.println("Too big!");
            } else if (input < rdmNumber) {
                System.out.println("Too small!");
            } else if (input == rdmNumber) {
                System.out.println("You win!");
            }
        }

        System.out.println("Play another Round? [y/N]");
        String nextRound = sc.nextLine();
        sc.next();
        if (nextRound.contains("y")) {
            input = 0;
        }

    }while (input == 0);
}
}
公共类猜谜游戏{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
Random rdm=new Random();//欢迎来到游戏
System.out.println(“欢迎!”);
//生成随机数
int输入=0;
做{
int rdmNumber=rdm.nextInt(999)+1;
while(输入!=rdmNumber){
试一试{
System.out.println(“请输入您的猜测:”);
int userGuess=Integer.parseInt(sc.next());
输入=用户猜测;
}捕获(数字格式){
System.out.println(“不是数字-再试一次!”);
}
如果(输入>rdmNumber){
System.out.println(“太大了!”);
}else if(输入

如果用户输入“y”,游戏应该重新启动,如果他/她输入“N”,游戏应该结束。

你只在
下一个命令包含(“y”)时更新
输入。因此,对于“y”以外的任何输入,输入将保持
0
(您将其初始化为的值)。while循环继续,因为
input==0
为true

正确的解决方案是将
if
语句更改为:

if(nextrund.contains(“N”)){
输入=1;
}
或者:

if(nextrund.contains(“N”)){
返回;
}

如果字符串不包含
y
,则可以将
input
设置为零以外的值。否则,
输入
始终为零。首先感谢您的回复。我改变了你告诉我的方式,但现在我遇到了问题,如果我输入“y”,它就会终止。