首页 > 解决方案 > 为什么连续两次调用 hasNext() 时只能从键盘输入一次数据?

问题描述

当我的代码如下:

Scanner sc = new Scanner(System.in);
     System.out.println(sc.hasNext());
     System.out.println(sc.hasNext());

我输入 1,以下是控制台中打印的内容

1 // input 1
true
true

但是当我添加一个System.out.println("str -> " + sc.next()); 在调用第一个 println() 之后,像这样:

System.out.println(sc.hasNext());
System.out.println("str -> " + sc.next());
System.out.println(sc.hasNext());

我还输入了一个 1,控制台中打印的内容变成了这样:

1 // input 1
true
str -> 1
1 //input 1
true

为什么我在添加System.out.println("str -> " + sc.next());时可以输入两次 在调用第一个 println() 之后?

标签: java

解决方案


您可以根据需要连续调用 hasNext() 多次,但它仍会报告输入流中的下一件事。

在下一个令牌之后,它无法告诉您有关下一个令牌的任何信息。

您必须先阅读下一个令牌,然后才能询问它后面的内容。


推荐阅读