当前位置: 首页 > 知识库问答 >
问题:

在while循环中编写一个新的扫描器如何阻止其他无限循环?

施自珍
2023-03-14
 Scanner user1 = new Scanner(System.in);
 input = user1.nextInt(); 

行,并且while循环保持无限运行。但现在代码做了我想做的,它停止并计算新用户输入的次数,只要输入错误(我在输入正确值之前输入了3、6、7个错误值,它每次都起作用)。

我的问题是,扫描器如何停止无限循环?扫描仪是否会导致计算机在继续操作之前等待用户输入,因此它会继续对其进行评估,而不是无限地打印出“对不起,这不是一个有效的输入...”?我只想确定我知道为什么它停止了。

Scanner user = new Scanner(System.in);
System.out.println("Hello, what would you like to do?" + "\n" + "1. Search"  + "\n" + "2. Add new instructor" + "\n" + "3. Remove Intsructor");
int input = user.nextInt(); 
boolean valid = false;
while(valid == false)
{
    if(input<3 && input>=1)
    {

        valid = true; 
    }
    else
    {
        System.out.println("I'm sorry, that's not a valid input, please enter 1, 2, or 3."); 
        Scanner user1 = new Scanner(System.in); 
        input = user1.nextInt(); 
    }

共有1个答案

方英耀
2023-03-14

它通过等待来停止循环。nextInt()是一个阻塞方法,这意味着当您调用它时,调用它的线程将等待,直到该方法返回一个值或者阻塞的原因已经完成。

当您调用nextInt()时,您的线程就会启动,并等待某个东西通过system.in。一旦有东西进来,方法就返回值。

如果您将scanner.nextInt()放在循环的内部,那么每个循环迭代都将等待用户输入

Scanner scanner = new Scanner(System.in);
boolean valid = true;

while(valid) {
    switch(scanner.nextInt()) {
        case 1:
        case 2:
            valid = false; //if nextInt() is 1 or 2
            break;

        default: //anything else

            break;
    }
}
 类似资料:
  • 我需要创建一个简单的游戏,其中创建了一个随机数,用户必须猜测数字输入到扫描仪。如果他们的猜测太高,系统会告诉他们猜测得更低,如果猜测得太低也是一样。 我正在使用while循环,但我不知道如何连续调用扫描器,以便用户可以不断猜测。以下是我到目前为止的代码:

  • 问题在代码的注释中,很抱歉,我认为它更整洁,因为流程很重要,我想。。。 //*这是来自Oracle:(https://docs.oracle.com/javase/6/docs/api/java/util/Scanner.html#hasNextInt()) ”hasNextInt 公共布尔值hasnetint() 如果此扫描仪输入中的下一个标记可以使用nextInt()方法解释为默认基数中的in

  • 正如使用boto3完全扫描dynamoDb中所解释的,我构建了一个解决方案,使用某些条件完全扫描dynamoDb表。这是我的代码: 但是当代码被执行时,它会进入一个无限循环。这是LastEvaluatedKey每次迭代的输出: 它一直在这两对之间循环。 编辑: 我添加了do_scan方法。

  • 这是我目前所掌握的:

  • 我开发了一个字符排序器,我想每次字符串排序后提示用户输入一个新的字符串。我遇到的问题是扫描仪一直在扫描用户的第一个输入。如果我使用scanner.next(),它不会计算输入末尾的空白,这不是解决方案。 这是while循环的开始。一旦代码完成,它将再次从“inputtext”开始。

  • 不知道如何阻止这个while循环无限重复。我使用检查用户输入是否为int。如果没有输入int值,则循环将无限重复。