当我的代码如下:
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()之后?
2条答案
按热度按时间r9f1avp51#
来自java文档
java.util.scanner文件
公共布尔hasnext()
如果此扫描仪的输入中有另一个令牌,则返回true。此方法在等待输入扫描时可能会阻塞。扫描仪不会超过任何输入。
第一个输入来自下一个方法。因为下一个调用没有任何输入
第二个输入来自下一个方法。
希望这能澄清你的问题。
1aaf6o9v2#
您可以连续多次调用hasnext(),但它仍将报告输入流中的下一个事件。
它不能在下一个令牌之后告诉你关于下一个令牌的任何信息。
你必须先读下一个记号,然后才能问它后面是什么。