• 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
  • 相关阅读:
    leetcode 540.有序数组中的单一元素(Java 二分查找 medium)
    leetcode 744.寻找比目标字母大的最小字母(Java 二分查找 easy)
    leetcode 69.x的平方根(Java 二分查找 easy)
    leetcode 763.划分字母区间(Java 贪心)
    leetcode 665.非递减数列
    查看pip安装的包所在位置
    html
    java web入门-servlet初步
    计算机网络-运输层
    计算机网络-网络层
  • 原文地址:https://www.cnblogs.com/alsf/p/7223358.html
Copyright © 2020-2023  润新知