关键词搜索

源码搜索 ×
×

(Java)Scanner 类

发布2020-02-10浏览3306次

详情内容

一、Scanner 类简介

Scanner 类的常用方法:
在这里插入图片描述
Scanner 类提供了一个可以接收 InputStream 类型的构造方法,这就表示只要是字节输入流的子类都可以通过 Scanner 类进行方便的读取

二、使用 Scanner 类输入数据

1. 实现基本的数据输入

import java.util.Scanner;

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

    在这里插入图片描述
    程序中输入流带有空格的内容,结果只是取出来空格之前的内容,因为 Scanner 将空格当做了一个分隔符,为了保证程序的正确,将分隔符号修改为“\n(回车)”

    import java.util.Scanner;
    
    public class Test{
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);//从键盘接收数据
            scan.useDelimiter("\n");//修改输入数据的分隔符
            System.out.print("输入数据:");
            String str = scan.next();
            System.out.println("输入的数据为:" + str);
        }
    }
    
      11

    在这里插入图片描述
    如果要输入 int 或 float 类型的数据,Scanner 类也支持,但是在输入之前最好先使用 hasNextXxx() 方法验证

    import java.util.Scanner;
    
    public class Test{
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);//从键盘接收数据
            int i=0;
            float j=0;
            System.out.print("输入整数:");
            if (scan.hasNextInt()) {//判断输入的是否是整数
                i = scan.nextInt();//接收整数
                System.out.println("整数数据:" + i);
            }
            System.out.print("输入小数:");
            if (scan.hasNextFloat()) {//判断输入的是否是小数
                j = scan.nextFloat();//接收小数
                System.out.println("小数数据:" + j);
            }
        }
    }
    
      11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    2. 实现日期格式的数据输入

    在 Scanner 了中没有专门的日期格式输入操作,因此需要自己编写验证,手动转换。

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    
    public class Test{
        public static void main(String[] args) {
            Scanner scn = new Scanner(System.in);
            System.out.print("输入日期(yyyy-MM-dd):");
            String str = null;
            Date date = null;
            if (scn.hasNext("^\\d{4}-\\d{2}-\\d{2}$")) {//判读输入格式是否是日期
                //接收日期格式的字符串转换成日期
                str = scn.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);
        }
    }
    
      11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    在这里插入图片描述

    3. 从文件中得到数据

    如果要从文件中取得数据,则直接将 File 类的实例传入到 Scanner 的构造方法中。
    比如现在这里想要读取 test.txt 文件

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Scanner;
    
    public class Root{
        public static void main(String[] args) {
            File f = new File("D:" + File.separator + "test.txt");
            Scanner scan = null;
            try {
                scan = new Scanner(f);//从文件接收数据
                scan.useDelimiter("\n");//注意这里同样要修改分隔符
            }catch (FileNotFoundException e){
                e.printStackTrace();
            }
            StringBuffer str = new StringBuffer();//用于接收数据
            while (scan.hasNext()){//判读是否还有内容
                str.append(scan.next()).append("\n");//取出内容
            }
            System.out.println(str);
        }
    }
    
      11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    这里需要注意 Scanner 含有默认的分隔符,需要将其分隔符自定义,达到一次读取一行的目标,然后读取一行后为其添加换行符

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载