Scanner类
public final class Scannerextends Objectimplements
Iterator<String>
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配
例如
Scanner sn=new Scanner(System.in);
String s=sn.next();
System.out.println(s);
一定要读取到有效字符后才会结束输入
对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
next() 不能得到带有空格的字符串
使用nextLine
Scanner sc=new Scanner(System.in);
String s = sc.nextLine();
System.out.println(s);
以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符
可以输出空白格
输入int ,float
就是使用Scanner的对象调用nextint,nextfloat方法
其他几个类型也是类似,
直到遇到相符合的值,才会退出输入,遇到不符的会报错,遇到空格会删除,
当然我们也可以使用对应输入类型的迭代方法,使之可以一直输入,除非遇到非对应的类型,会结束输入,但不会报错
如
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int i = sc.nextInt();
System.out.println(i);
}
所以基本数据类型都可以
其他的亦是如此
读取文本的内容
Scanner sc = new Scanner(new File("C:\\Users\\gww15\\Desktop\\ss.txt"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
System.out.println(aLong); 这里,只是举例,其他的数据类型也可以
}
此时可以一直读取,遇到空格会删除,文章开头讲过,默认空格分隔,所以读数是按空格来分的,遇到不符的数据类型,不会报错,但会结束输入,
如果不迭代的话,将会读取到一个相符类型的值后结束输入,如果读到了不相符的将会报错,java.util.InputMismatchException 输入不匹配
其他类型亦是如此,只不过使用的方法不相同,都有何类型对应的方法
不使用默认的分隔符
之前我们说了,默认使用的是空格来分隔的
Scanner sc=new Scanner("h34h6h9h444").useDelimiter("\\s*h\\s*");
while (sc.hasNextInt()) {
int i = sc.nextInt();
System.out.println(i+“,”);
}
\\s* \\s* 是个格式,中间是分隔符h
打印,34,6,9,444
还可以就是使用正则表达式,不举例了,不太会正则,
反正博客只能自己见,别人看不了,