使用Scanner类输入数据(2)

2.实例操作二:实现日期格式的数据输入

在Scanner类中没有提供专门的日期格式输入操作,所以,如果想得到一个日期类型的数据,则必须自己编写正则验证,并手工转换。以下代码演示了具体的操作。

范例:得到日期

 
 
  1. package org.lxh.demo12.scannerdemo;  
  2. import java.text.ParseException;  
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5. import java.util.Scanner;  
  6. public class ScannerDemo04 {  
  7.     public static void main(String[] args) {  
  8.         Scanner scan = new Scanner(System.in);      
    // 从键盘接收数据  
  9.         System.out.print("输入日期(yyyy-MM-dd):");  
  10.         String str = null;  
  11.         Date date = null ;  
  12.         if (scan.hasNext("^//d{4}-//d{2}-//d{2}$")) 
    // 判断输入格式是否是  
  13. 日期  
  14.             str = scan.next("^//d{4}-//d{2}-//
    d{2}$"
    );// 接收日期格式的字符串  
  15.             try {                              
    // 转换成日期  
  16.                 date = new SimpleDateFormat
    ("yyyy-MM-dd").parse(str) ;  
  17.             } catch (ParseException e) {  
  18.                 e.printStackTrace();  
  19.             }  
  20.         }else{  
  21.             System.out.println("输入的日期格式错误!");  
  22.         }  
  23.         System.out.println(date);  
  24.     }  

程序运行结果:

 
 
  1. 输入日期(yyyy-MM-dd):2008-08-13 
  2. Wed Aug 13 00:00:00 CST 2008 

以上程序使用hasNext()对输入的数据进行正则验证,如果合法,则转换成Date类型。

3.实例操作三:从文件中得到数据

如果要从文件中取得数据,则直接将File类的实例传入到Scanner的构造方法中即可。例如,现在要显示"d:/test.txt"中的内容,则可以采用以下的代码,此文件的内容如图12-17所示。

 
图12-17  test.txt文件的内容

范例:读取test.txt文件

 
 
  1. package org.lxh.demo12.scannerdemo;  
  2. import java.io.File;  
  3. import java.io.FileNotFoundException;  
  4. import java.util.Scanner;  
  5. public class ScannerDemo05 {  
  6.     public static void main(String[] args) {  
  7.         File f = new File("D:" + File.
    separator + "test.txt");  // 指定操作  
  8. 文件  
  9.         Scanner scan = null;  
  10.         try {  
  11.             scan = new Scanner(f);           
    // 从文件接收数据  
  12.         } catch (FileNotFoundException e) {  
  13.             e.printStackTrace();  
  14.         }  
  15.         StringBuffer str = new StringBuffer();   
    // 用于接收数据  
  16.         while (scan.hasNext()) {                 
    // 判断是否还有内容  
  17.             str.append(scan.next()).append("/n"); 
    // 取出内容  
  18.         }  
  19.         System.out.println(str);  
  20.     }  

程序运行结果:

 
 
  1. 姓名:李兴华;年龄:30;成绩:990.356;性别:M 

从Scanner类的操作中可以发现,Scanner类有默认的分隔符,这样如果在文件中存在换行,则表示一次输入结束,所以本程序采用循环的方式读取,并在每次读完一行之后加入换行符,因为读取时内容需要反复修改,所以使用StringBuffer类以提升操作性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值