Scanner
使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。可以使用不同的 next
方法将得到的标记转换为不同类型的值,例如:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
Scanner
下有hasNextXxx
、nextXxx
的方法,Xxx
代表值的类型。
hasNextXxx
返回boolean
,判断是否有下一个Xxx
类型的标记。nextXxx
返回Xxx
类型的值,省略Xxx
则返回String
类型。
Scanner
的next()
和nextLine()
方法都是返回String
类型,但是它们是有区别的:
next
next()
一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab
键或Enter
键等结束符,next()
方法会自动将其去掉,只有在输入有效字符之后,next()
方法才将其后输入的空格键、Tab
键或Enter
键等视为分隔符或结束符。nextLine
nextLine()
方法的结束符只有Enter
键,即nextLine()
方法返回的是Enter
键之前的所有字符,通过这个方法可以得到带空格的字符串。对于回车,这个方法返回""
空字符串。
next和nextLine组合使用的注意点:
所有以next
开头的方法,和nextLine()
连用,并且nextLine()
在next
之后,那么需要在两者之间额外加一个nextLine()
处理回车,因为nextLine()
会读取结束next
方法的Enter
键。
实战:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入加密/解密id");
String id = scanner.next();
System.out.println("输入appSecret,如果输入回车,默认使用:default");
// 处理回车
scanner.nextLine();
String appSecret = scanner.nextLine();
if ("".equals(appSecret)) {
appSecret = "default";
}
System.out.println("id:" + id);
System.out.println("appSecret:" + appSecret);
scanner.close();
}