您的位置:首页 > 编程语言 > Java开发

Java学习提要——Scanner基础应用

2016-10-23 20:34 239 查看
BufferedReader可以解决大文本数据的读取操作

但是BufferedReader有两个问题:

1.读取数据的时候只可以按照字符串返回:public String readLine() throws IOException;

2.所有的分隔符都是固定的。

1.Scanner的基本应用

java.util.Scanner类

//构造方法:
public Scanner(InputStream source)

Scanner类里面定义了以下两大组方法:
//1.判断是否有指定数据,Xxx代表不同类型:
public boolean hasNextXxx();
//2.取出数据,Xxx代表不同类型:
public 数据类型 nextXxx();


//以键盘输入为例:
import java.util.Scanner;

public class Nice {
public static void main(String[] args) throws Exception{
Scanner scan = new Scanner(System.in);  //准备接收输入数据
System.out.print("请输入内容:");
if (scan.hasNext()) {  //现在有输入数据
System.out.println("输入内容:" + scan.next());
}
scan.close();
}
}
//需要注意的是,如果输入的是字符串,是否存在hasNext()就没那么重要(可以不写)
//但是如果是其他类型,那么hasNextXxx()就有意义了

//在上面基础上改写,hasNextXxx()
if (scan.hasNextDouble()) {  //表述输入的是一个小数
double score = scan.nextDouble();  //省略了转型
System.out.println("输入内容:" + score);
} else {  //表示输入的不是一个小数
System.out.println("输入的不是数字,错误");
}


//使用正则验证
import java.util.Scanner;

public class Nice {
public static void main(String[] args) throws Exception{
Scanner scan = new Scanner(System.in);  //准备接收输入数据
System.out.print("请输入生日:");
if (scan.hasNext("\\d{4}-\\d{2}-\\d{2}")) {  //现在有输入数据
String bir = scan.next("\\d{4}-\\d{2}-\\d{2}");
System.out.println("输入内容:" + bir);
} else {
System.out.println("输入的生日格式错误");
}
scan.close();
}
}


2.分隔符问题

在Scanner类的构造里面由于接收的类型是InputStream,

所以此时依然可以设置一个文件的数据流,

但是在进行文件读取的时候,我们要考虑分割符问题

设置分隔符

public Scanner useDelimiter(String pattern)

import java.io.File;
import java.io.FileInputStream;
import java.util.Scanner;

public class Nice {
public static void main(String[] args) throws Exception{
Scanner scan = new Scanner(new FileInputStream(new File("E:"+File.separator+"test.txt")));
scan.useDelimiter("\n");  //设置读取的分隔符
while (scan.hasNext()) {
System.out.println(scan.next());
}
scan.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐