这个代码片段如何与缓冲区一起使用? Java的

时间:2014-12-01 21:02:58

标签: 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 valid number.");
}
numberOfLives = input.nextInt();

在我看来,放置numberOfLives = input.nextInt()会更有意义; while循环内部的行。一旦它到达while循环,这基本上就是我从这个片段中理解的:

  1. 检查条件,如果输入的扫描仪变量没有int值,请执行以下操作
  2. 放弃输入扫描仪变量中的内容
  3. 打印出有效的号码信息
  4. 显然这不是它的方式,否则这个片段不起作用。我想也许每次检查条件时,实际的!input.hasNextInt()再次打开缓冲区进行输入,然后检查里面的内容,但我不知道。

    很抱歉,如果我没有正确使用这些条款,那么现在就可以了解所有这些内容。

    谢谢!

1 个答案:

答案 0 :(得分:0)

与迭代器一样,扫描程序将始终在流启动之前指向该元素。即如果列表从位置0开始,扫描仪将指向第-1位置。 next()将使扫描仪前进并返回位置处的元素。 在这段代码中,我们检查下一个元素是否是整数。如果不是,为什么要推进扫描仪?