2.实例操作二:实现日期格式的数据输入
在Scanner类中没有提供专门的日期格式输入操作,所以,如果想得到一个日期类型的数据,则必须自己编写正则验证,并手工转换。以下代码演示了具体的操作。
范例:得到日期
- package org.lxh.demo12.scannerdemo;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Scanner;
- public class ScannerDemo04 {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
// 从键盘接收数据- System.out.print("输入日期(yyyy-MM-dd):");
- String str = null;
- Date date = null ;
- if (scan.hasNext("^//d{4}-//d{2}-//d{2}$"))
{ // 判断输入格式是否是- 日期
- str = scan.next("^//d{4}-//d{2}-//
d{2}$");// 接收日期格式的字符串- try {
// 转换成日期- date = new SimpleDateFormat
("yyyy-MM-dd").parse(str) ;- } catch (ParseException e) {
- e.printStackTrace();
- }
- }else{
- System.out.println("输入的日期格式错误!");
- }
- System.out.println(date);
- }
- }
程序运行结果:
- 输入日期(yyyy-MM-dd):2008-08-13
- Wed Aug 13 00:00:00 CST 2008
以上程序使用hasNext()对输入的数据进行正则验证,如果合法,则转换成Date类型。
3.实例操作三:从文件中得到数据
如果要从文件中取得数据,则直接将File类的实例传入到Scanner的构造方法中即可。例如,现在要显示"d:/test.txt"中的内容,则可以采用以下的代码,此文件的内容如图12-17所示。
图12-17 test.txt文件的内容 |
范例:读取test.txt文件
- package org.lxh.demo12.scannerdemo;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.util.Scanner;
- public class ScannerDemo05 {
- public static void main(String[] args) {
- File f = new File("D:" + File.
separator + "test.txt"); // 指定操作- 文件
- Scanner scan = null;
- try {
- scan = new Scanner(f);
// 从文件接收数据- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- StringBuffer str = new StringBuffer();
// 用于接收数据- while (scan.hasNext()) {
// 判断是否还有内容- str.append(scan.next()).append("/n");
// 取出内容- }
- System.out.println(str);
- }
- }
程序运行结果:
- 姓名:李兴华;年龄:30;成绩:990.356;性别:M
从Scanner类的操作中可以发现,Scanner类有默认的分隔符,这样如果在文件中存在换行,则表示一次输入结束,所以本程序采用循环的方式读取,并在每次读完一行之后加入换行符,因为读取时内容需要反复修改,所以使用StringBuffer类以提升操作性能。