java—为什么在连续两次调用hasnext()时只能从键盘输入一次数据?

mklgxw1f  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(352)

当我的代码如下:

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())时可以输入两次1;在调用第一个println()之后?

r9f1avp5

r9f1avp51#

来自java文档
java.util.scanner文件
公共布尔hasnext()
如果此扫描仪的输入中有另一个令牌,则返回true。此方法在等待输入扫描时可能会阻塞。扫描仪不会超过任何输入。
第一个输入来自下一个方法。因为下一个调用没有任何输入
第二个输入来自下一个方法。
希望这能澄清你的问题。

1aaf6o9v

1aaf6o9v2#

您可以连续多次调用hasnext(),但它仍将报告输入流中的下一个事件。
它不能在下一个令牌之后告诉你关于下一个令牌的任何信息。
你必须先读下一个记号,然后才能问它后面是什么。

相关问题