Java5提供的Scanner类

简介:
1. 从键盘读取字符, 可以连续不断的输入字段,直到输入exit就退出程序。但此程序存在的问题是:输入字符之间有空格,则空格后面的不会被读取。
 
private  static  void readLineFromKeyboard() {
                 while( true){
                        Scanner scan =  new Scanner(System.in); // 从键盘接收数据
                        String str = scan.next();
                         if(str.equals( "exit")){
                                System.exit(0);
                        }
                        System.out.println(str);
                        
                }
        }

2. 由于存在分隔符问题,即输入字符之间存在空格之类,则只能输入前一部分。 使用 useDelimiter方法可以避免这种事情发。
 
Scanner scan =  new Scanner(System.in) ;   // 从键盘接收数据
    System.out.print( "输入数据:") ;
    scan.useDelimiter( "\n") ;
    String str = scan.next() ;   // 接收数据
    System.out.println( "输入的数据为:" + str) ;

将1和2两种情况结合起来,代码为:
private  static  void readLineFromKeyboard() {
                 while( true){
                        Scanner scan =  new Scanner(System.in);
                        System.out.print( "输入数据:") ;
                        scan.useDelimiter( "\n"); // 忽略\n
                        String str = scan.next();
                         if(str.equals( "exit\r")){// 回车换行为\n\r, 则剩下\r
                                System.exit(0);
                        }
                        System.out.println( "输入的数据为:" + str) ;
                }
        }



3. 输入各种数据的例子
 
Scanner scan =  new Scanner(System.in) ;   // 从键盘接收数据
     int i = 0 ;
     float f = 0.0f ;
    System.out.print( "输入整数:") ;
     if(scan.hasNextInt()){   // 判断输入的是否是整数
      i = scan.nextInt() ;   // 接收整数
      System.out.println( "整数数据:" + i) ;
    } else{
      System.out.println( "输入的不是整数!") ;
    }
    System.out.print( "输入小数:") ;
     if(scan.hasNextFloat()){   // 判断输入的是否是小数
      f = scan.nextFloat() ;   // 接收小数
      System.out.println( "小数数据:" + f) ;
    } else{
      System.out.println( "输入的不是小数!") ;
    }

4. 上面的方式都能收正常的数据,但是对日期类型的数据确实不行的,需要用到正则匹配才能处理 hasNext(Pattern pattern) 
 
Scanner scan =  new Scanner(System.in) ;   // 从键盘接收数据
    String str =  null ;
    Date date =  null ;
    System.out.print( "输入日期(yyyy-MM-dd):") ;
     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(Exception e){}
    } else{
      System.out.println( "输入的日期格式错误!") ;
    }
    System.out.println(date) ;




5. 接受文件中的数据
File f =  new File( "D:" + File.separator +  "test.txt") ;   // 指定操作文件
    Scanner scan =  null ;
     try{
      scan =  new Scanner(f) ;   // 从键盘接收数据
    } catch(Exception e){}
    StringBuffer str =  new StringBuffer() ;
     while(scan.hasNext()){
      str.append(scan.next()).append('\n')  ;   //  取数据
    }
    System.out.println( "文件内容为:" + str) ;

可见Scanner读取数据还是很方便的,同时注意分隔符。



本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/245094,如需转载请自行联系原作者

相关文章
|
18天前
|
Java
什么是Java中的类和对象?它们之间有什么区别?
【4月更文挑战第12天】Java中,类是面向对象编程的基础,是对象的模板,封装数据和方法,描述共享属性和行为。对象是类的实例,具有独特属性和行为,代表具体的个体。类与对象间是抽象与具体的关联,类是事物抽象描述,对象是其具体体现。
18 2
|
9天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
46 3
|
1天前
|
Java
Java对象和类研究
Java对象和类研究
6 0
|
1天前
|
XML Java 测试技术
Java异常处理神器:Guava Throwables类概念与实战
【4月更文挑战第29天】在Java开发中,异常处理是保证程序稳定性和可靠性的关键。Google的Guava库提供了一个强大的工具类Throwables,用于简化和增强异常处理。本篇博客将探讨Throwables类的核心功能及其在实战中的应用。
7 2
|
1天前
|
存储 安全 Java
【Java EE】CAS原理和实现以及JUC中常见的类的使用
【Java EE】CAS原理和实现以及JUC中常见的类的使用
|
5天前
|
人工智能 安全 Java
Java8 - LocalDateTime时间日期类使用详解
Java8 - LocalDateTime时间日期类使用详解
|
6天前
|
缓存 Java 程序员
|
6天前
|
安全 Java 程序员
|
6天前
|
Java
一文搞清楚Java中的包、类、接口
包、类、接口、方法、变量、参数、代码块,这些都是构成Java程序的核心部分,即便最简单的一段代码里都至少要包含里面的三四个内容,这两天花点时间梳理了一下,理解又深刻了几分。
29 10
|
7天前
|
Java
Java Class类
Java Class类
8 0