26.1 Scanner的概述和方法介绍
1、概述:一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。 Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
例如,以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
2、Scanner()的构造方法原理:
Scanner(InputStream source)
System类下有一个静态的字段:
public static final InputStream in;
标准的输入流,对应着键盘录入。
构造方法摘要如图1所示:
图1
3、一般方法:
hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx;如图2所示:
图2
nextXxx() 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanner使用空格,回车等作为分隔符。
案例演示如图3所示:
图3
4、两个常用的方法:
public int nextInt(); 获取一个int类型的值;
public String nextLine(); 获取一个String类型的值。
区别:
nextInt()是键盘录入整数的方法,当nextInt()遇到“\r或者\n”时,整个方法就结束了,因此,导致我们录入一个整数后,回车就导致方法结束;
nextLine()是键盘录入字符串的方法,可以接受任意字符,通过“\r或者\n”证明一行结束。
演示1:键盘录入2个整数,并输出?如图4所示:
图4
演示2:键盘录入2个字符串,并输出?如图5所示:
图5
演示3:键盘录入1个整数1个字符串,并输出?如图6所示:
图6
说明:我们发现使用上图方法,当输入整数a后,方法就直接结束了,无法再继续输入字符串,原因就是当nextInt()遇到“\r或者\n”时,整个方法就结束了,导致我们录入一个整数后,回车就导致new Scanner(System.in)方法结束。
解决办法1:开辟新的new Scanner(System.in),如图7所示:
图7
解决办法2:可通过nextLine()输入整数类型的数字,因为nextLine接受任意类型的数据,如图所示8:
图8
感谢支持,我是小区学习录,喜欢点关注。每天根据小编的学习,持续分享学习的笔记与心得。
领取专属 10元无门槛券
私享最新 技术干货