zoukankan      html  css  js  c++  java
  • JAVA IO:Scanner类

    使用Scanner类接收输入数据。

    JAVA提供了专门的输入数据类,此类可以完成BufferedReader类的功能,也可以方便的对输入数据进行验证,此类存放于JAVA.UTILL包中。

    常用方法如下:

    此类不在java.io中,而在java.utill类,所以此类是一个工具类。

    1,使用Scanner接收键盘输入数据

    package 类集;
    import java.util.* ;
    public class ScannerDemo01{
        public static void main(String args[]){
            Scanner scan = new Scanner(System.in) ;    // 从键盘接收数据
            System.out.print("输入数据:") ;
            String str = scan.next() ;    // 接收数据
            System.out.println("输入的数据为:" + str) ;
        }
    };

    运行结果:

    输入数据:2123
    输入的数据为:2123

    比直接使用BufferedReader类方便,但是以上程序还是存在问题。

    如果输入数据之间存在空格,会以空格为分隔符。如果要想输入空格,则必须修改分隔符,将分隔符变成" "。

    Pattern delimiter()    返回此 Scanner 当前正在用于匹配分隔符的 Pattern。 

    修改分隔符:

    package 类集;
    import java.util.* ;
    public class ScannerDemo01{
        public static void main(String args[]){
            Scanner scan = new Scanner(System.in) ;    // 从键盘接收数据
            System.out.print("输入数据:") ;
            scan.useDelimiter("
    ") ;    //表示以换行作为分隔符,也就是说,按回车键后才会把数据分割。而取代了之前的空格
            String str = scan.next() ;    // 接收数据
            System.out.println("输入的数据为:" + str) ;
        }
    };

    输入结果:

    输入数据:3243 423423 43242
    输入的数据为:3243 423423 43242

    之前输入都是以字符串形式返回,实际上也可以使用Scanner方便返回整数或者小数。

    有以下方法:

    接收整数:

    1,判断是否是整数,如果是,返回true:hasNextInt()。

    2,public int getInt();

    接收小数:

    1,判断是否小数,:hasNextFloat()

    2,public float  getFloat()

    package 类集;
    import java.util.* ;
    public class ScannerDemo01{
        public static void main(String args[]){
            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("输入的不是小数!") ;
            }
        }
    };

    运行结果:

    输入整数:32
    整数数据:32
    输入小数:12312
    小数数据:12312.0

    处理日期类型

    Scanner类虽然可以接受各种类型,但是对于日期型却无法接收!

    如果要想接收Data类型的数据,只能通过字符串转型,但是接收的时候依然可以使用Scanner类中提供的方法验证:

    验证:public String hasnext(Pattern pattern)

    接收:public String netxt(Pattern pattern)

    package 类集;
    import java.text.SimpleDateFormat;
    import java.util.* ;
    public class ScannerDemo01{
        public static void main(String args[]){
            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) ;
        }
    };

    运行结果:

    输入日期(yyyy-MM-dd):2032-90-90
    Mon Aug 29 00:00:00 CST 2039

    还可以直接从文件中读取信息。

    package 类集;
    import java.io.File;
    import java.text.SimpleDateFormat;
    import java.util.* ;
    public class ScannerDemo01{
        public static void main(String args[]){
            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('
    ')    ;    //    取数据,这里默认以空格作为分隔符
    } System.out.println("文件内容为:" + str) ; } };

    运行结果:

    文件中内容如下:

    实际读取结果:(因为他默认以空格为分隔符)

    文件内容为:321312312312
    43
    3432
  • 相关阅读:
    1062 Talent and Virtue (25 分)
    1083 List Grades (25 分)
    1149 Dangerous Goods Packaging (25 分)
    1121 Damn Single (25 分)
    1120 Friend Numbers (20 分)
    1084 Broken Keyboard (20 分)
    1092 To Buy or Not to Buy (20 分)
    数组与链表
    二叉树
    时间复杂度与空间复杂度
  • 原文地址:https://www.cnblogs.com/alsf/p/7223358.html
Copyright © 2011-2022 走看看