循环条件hasNext(),hasNextLine(),hasNextInt()和End of File

时间:2017-06-24 14:02:01

标签: java

我必须编写一个带有单词和2个整数的程序。程序到达文件结束时应该停止。

以下是我的初始代码:

import java.util.*;

public class Test {

  public static void main(String[] args) {

    String str;
    int x, y;

    Scanner scan = new Scanner(System.in);

    while (!scan.hasNextInt()) {

      str = scan.next();
      x = scan.nextInt();
      y = scan.nextInt();
   }
 }
}

但我收到了一个错误。我将while条件更改为scan.hasNextLine(),但它仍然无法正常工作。最后,我将条件更改为scan.hasNext(),并且它有效。为什么呢?

1 个答案:

答案 0 :(得分:1)

如果您阅读Scanner的{​​{3}},您会发现:

  

public boolean hasNext()

     

如果此扫描仪具有另一个,则返回true   令牌在其输入中。

如果您想使用hasNextLine(),则需要在每个循环中阅读,然后解析它到String两个 int,否则您需要检查下一个令牌的可用性,然后阅读它。通过使用上述int方法,令牌可以是Stringpublic boolean hasNext()

另一方面,hasNextInt()正在检查是否存在下一个int 检查下一个String因此,while-loop中的条件逻辑不适合您的程序。