定义
- 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
没有输入了