这个代码段如何处理缓冲区?JAVA

这个代码段如何处理缓冲区?JAVA,java,buffer,Java,Buffer,所以基本上这段代码应该一直询问“请插入一个有效的数字”,直到一个整数通过键盘输入。它工作得很好,我只是好奇它到底是怎么做的 Scanner input = new Scanner(System.in); System.out.println("Please insert the number of lives."); while (!input.hasNextInt()) { input.next(); System.out.println("Please insert a va

所以基本上这段代码应该一直询问“请插入一个有效的数字”,直到一个整数通过键盘输入。它工作得很好,我只是好奇它到底是怎么做的

Scanner input = new Scanner(System.in);
System.out.println("Please insert the number of lives.");
while (!input.hasNextInt()) {
    input.next();
    System.out.println("Please insert a valid number.");
}
numberOfLives = input.nextInt();
在我看来,将numberOfLifes=input.nextInt()放在这里更有意义;线在while循环的内部。这基本上就是我从这段代码中理解的,一旦它到达while循环:

  • 检查条件,如果输入扫描器变量没有int值,请执行以下操作
  • 丢弃输入scanner变量中的内容
  • 打印出有效的数字信息
  • 很明显,事情不是这样的,否则这个片段就不起作用了。我在想,也许每次它检查情况时,都是真实的!hasNextInt()再次打开缓冲区进行输入,然后检查里面有什么,但我没有任何线索

    对不起,如果我没有正确使用这些术语,现在对所有这些东西都很好


    谢谢

    像迭代器一样,scanner总是在流开始之前指向元素。i、 e.如果列表从位置0开始,扫描仪将指向-1位置。next()将使扫描仪前进并返回位置处的元素。 在这段代码中,我们检查下一个元素是否为整数。如果不是,为什么要推进扫描仪