java - 为什么连续两次调用 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() 之后?
解决方案
您可以根据需要连续调用 hasNext() 多次,但它仍会报告输入流中的下一件事。
在下一个令牌之后,它无法告诉您有关下一个令牌的任何信息。
您必须先阅读下一个令牌,然后才能询问它后面的内容。
推荐阅读
- javascript - Google Apps 脚本 JQuery 表单
- python - 如何从包含的对象调用容器类方法?
- c++ - Cpp 文件说 [converted] 并且是一堆随机字符
- ruby-on-rails - 在开发日志中静音资产请求(config.assets.quiet = true 不起作用)
- python - 网页抓取错误,它说索引不足,怎么回事
- matlab - 在 MATLAB 中高效生成置换矩阵
- python - 使用 tf.data 和叉积对两个数据集进行增强
- r - 按组查找某个值后的第一个非 NA 值
- html - 如果项目内的内容可以将其扩展超出其分配范围,那么 CSS Grid 中的 fr 单位有什么意义
- cordova - Ionic 4:让应用程序在后台保持活力