【问题标题】:Stay in a loop until the right input保持循环直到正确的输入
【发布时间】:2021-10-22 02:50:24
【问题描述】:

我正在尝试构建一个简单的猜谜游戏,您可以在其中选择数字范围。我想留在我的循环中,直到用户猜对了数字。在第一次错误猜测之后,while 循环不允许下一个输入。如何在变量匹配之前留在循环内?

import java.util.Scanner;
public class main {
public static void main(String[] args) {
    Scanner reader = new Scanner(System.in);
    test random = new test();
    
    System.out.print("Please input a minumum amount: ");
    int min = reader.nextInt();
    System.out.print("Please input a maximum amount: ");
    int max = reader.nextInt();
    
    int answer = random.getRandom(min, max);
    
    System.out.print("Please guess a number between you " + min + "-" + max + ": ");
    int input = reader.nextInt(); 
    
    while(input != answer) {
            System.out.println("Guess again");
    }
    
    if(input == answer) {
        System.out.println("You got it right!");
    }
    
    
}
}

【问题讨论】:

  • 您的陈述相互矛盾。 ...停留在我的循环中,直到用户猜出正确的数字 并且 while 循环在第一次错误猜测后不允许下一个输入。这两个怎么可能?
  • 查看Java do-while loops

标签: java loops


【解决方案1】:
while(true){
if(input==answer) break;
else continue;
}

【讨论】:

  • 我最终让它与 do while 循环一起工作,但这非常简短和甜蜜。不确定我是否理解 while 循环中的“真实”与什么比较?只有当 input==answer boolean 为真时才会中断?
  • while(true) 表示它运行,而它的 true 表示它将永远运行。如果输入为 answer,break 语句将退出循环并继续程序的下一部分。如果输入不等于答案,则循环将继续,直到输入等于答案。希望对您有所帮助!
【解决方案2】:

input = reader.nextInt();”这行不是您从用户那里获得输入的吗?如果是这样,那么该行也需要在 while 循环内,以便您可以从用户那里得到另一个猜测。但不要第二次使用定义“int”,否则会出现“已经定义”的错误。

另外,“if(input == answer) {”测试是不是不必要的,因为如果答案不正确,您仍然处于 while 循环中?

【讨论】:

  • 那么在循环外初始化输入,然后在while循环的每一遍都重新定义它?我懂了。同样是的,甚至不需要 if 语句,现在您提到它感觉非常多余。谢谢!
  • 不重新定义它,只是在循环内引用它。正如我所说,如果你尝试重新定义一个变量,你会得到一个错误。
  • 不重新定义它,只是在循环内引用它。正如我所说,如果你试图重新定义一个变量,你会得到一个错误。我认为您甚至可以在循环之外定义“输入”,然后像这样执行 while 循环:while( answer != input = reader.nextInt() ){}。我认为应该先执行 nextInt() 函数,将结果赋值给“input”,然后与“answer”进行比较,全部在一个语句中。
猜你喜欢
  • 1970-01-01
  • 2021-11-19
  • 2017-02-15
  • 2020-09-02
  • 1970-01-01
  • 2021-07-16
  • 2020-08-18
  • 1970-01-01
  • 2011-06-27
相关资源
最近更新 更多