(Java)Scanner 类

一、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);
    }
}

在这里插入图片描述
如果要输入 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);
        }
    }
}

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);
    }
}

在这里插入图片描述

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);
    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值