初步认识Scanner
简单版本解释:
java.util.Scanner是java5的新特性,可以获取用户的输入。
详细版本解释:
基本定义:
Scanner类是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
摘自Java_API文档
解释:正则表达式 一种强大的字符串匹配工具
接收输入的方式:
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的next方法将得到的标记转换为不同的值。
Scanner不同的next方法总结
表格
返回值 | 方法名及描述 |
---|---|
String | next():查找并返回来自此扫描器的下一个完整标记 |
String | next(Pattern pattern):如果下一个标记与指定模式匹配,则返回下一个标记 |
String | next(String pattern):如果下一个标记从指定字符串构造的模式匹配,则返回下一个标记 |
BigDecimal | nextBigDecimal():将输入信息的下一个标记扫描为一个BigDecimal |
BigInteger | nextBigInteger():将输入信息的下一个标记扫描为一个BigInteger |
BigInteger | nextBigInteger(int radix):将输入信息的下一个标记扫描为一个BigInteger |
boolean | nextBoolean():扫描解释为一个布尔值的输入标记并返回 |
byte | nextByte():将输入信息的下一个标记扫描为一个byte |
byte | nextByte(int radix):将输入信息的下一个标记扫描为一个byte |
double | nextDouble():将输入信息的下一个标记扫描为一个double |
float | nextFloat:将输入信息的下一个标记扫描为一个float |
int | nextInt():将输入信息的下一个标记扫描为一个int |
int | nextInt(int radix):将输入信息的下一个标记扫描为一个int |
String | nextLine():执行当前行,并返回跳过的所有输入信息 |
long | nextLong():将输入信息的下一个标记扫描为一个long |
long | nextLong(int radix):将输入信息的下一个标记扫描为一个long |
short | nextShort():将输入信息的下一个标记扫描为一个short |
short | nextShort(int radix):将输入信息的下一个标记扫描为一个short |
特殊之next()与nextLine()的区别
next():
·一定要读取到有效字符后才可以结束输入。
·对输入有效字符之前遇到的空白,next()方法会自动将其去掉
·只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
·next()不能得到带有空格的字符串
nextLine():
·以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
·可以获得空白
Scanner的hasNextXXX()
Scanner类提供一组boolean类型的方法用来验证是否是需要的数据
hasNext____ +需要验证的数据类型即可
比如hasNextDouble()验证传入的参数是否为double类型
使用
使用前需要添加
import java.util.Scanner;
定义方法:
Scanner 自定义名 = new Scanner(System.in);
调用方法:
变量类型 变量名 = 自定义名.next方法
例子
Scanner sc = new Scanner(System.in);
int a = sc.nextInt() ;
关于warnings
使用Scanner是出现
Resource leak: ‘sc’ is never closed
这里涉及属于 IO流 的类 ,相关影响:
输入流,不关闭,只会占用资源。
输出流,不关闭,可能会造成最后一部分数据丢失。
如果需要消除这个warning
只需要在使用完后 加上 close() 方法即可。