定义
- java.util.Scanner
- 一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串
- 通过 Scanner 类来获取用户的输入
- 常用键盘输入
Scanner scanner = new Scanner(System.in);,在有效字符串之前的空白会被去掉
方法
| 方法名 | 描述 |
|---|---|
| next() | 获取输入的字符串,不能得到带有空格的字符串,会将有效字符串之后的空白作为分隔符或者结束符 |
| nextXxx() | 获取输入的XXX类型的值 |
| nextLine() | 获取输入的字符串,可以获得空白,以Enter作为结束符 |
| hasNext() | 判断是否还有输入的数据 |
| hasNextLine() | 判断是否还有输入的数据 |
| close() | 关闭此扫描仪 |
代码示例
System.out.println("请输入:");
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String scan = scanner.next();
System.out.println("输入的是:"+scan);
}
System.out.println("没有输入了");
//结果
请输入:
as da faf
输入的是:as
输入的是:da
输入的是:faf
注:当扫描为空时,scanner.hasNext()并不返回false,而是将方法阻塞,等待你输入内容然后继续扫描。因此没有执行最后一条打印语句。
解决方法
使用带有参数的hasNext()重载方法,当扫描到的字符与参数值匹配时返回true,while里取非运算
System.out.println("请输入:");
Scanner scanner = new Scanner(System.in);
while (!scanner.hasNext("this")) {
String scan = scanner.next();
System.out.println("输入的是:"+scan);
}
System.out.println("没有输入了");
//结果
请输入:
dadv buacg this
输入的是:dadv
输入的是:buacg
没有输入了
Java Scanner 类详解
本文深入讲解 Java 中的 Scanner 类,包括其定义、常见方法如 next()、nextLine() 和 hasNext() 的使用,以及如何正确关闭 Scanner 对象。通过示例代码展示了如何从控制台读取用户输入,并提供了解决 Scanner 阻塞问题的方法。

951

被折叠的 条评论
为什么被折叠?



