Java的输入/输出——Scanner类

Scanner类既是一个用于扫描输入文本的实用程序,也是使用正则表达式来分析基本类型和字符串的简单文本扫描器。除了能使用正则表达式之外,Scanner类还可以任意的对字符串和基本类型的数据进行分析。
这里写图片描述

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;

/**
 * Scanner类
 * @author lzq
 *
 */
public class TestDemo5 {


    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //gain(scan);
        //gain1(scan);
        //gain2(scan);
        File file = new File("D:\\lzq/java.txt");
        gain(file);

    }

    /**
     * 从键盘获取数据 
     * @param scan
     */
    private static void gain(Scanner scan) {
        int num = 0;
        float f = 0.0F;
        System.out.println("请输入int型整数:");
        if(scan.hasNextInt()) {  //判断输出的数据是否为int型
            num = scan.nextInt();  //输入int型数据
        }else {
            System.out.println("输入的不是int型整数");
            System.exit(0);  //退出程序
        }
        System.out.println("请输入float型小数:");
        if(scan.hasNextFloat()) {  //判断输出的是否为float型数据
            f = scan.nextFloat();  //输入float型数据
        }else {
            System.out.println("输入的不是float小数");
            System.exit(0);    //退出程序
        }
        System.out.println("请输入字符串:");
        String str = scan.next();        //输入字符串
        System.out.println("整数:"+num+"\n小数:"+f+"\n字符串"+str);
    }

    /**
     * 在使用nextXxx()方法时,最好先验证,否则容易产生异常,若输入的字符串中间含有空格,
     * 那么空格之后的数据就没有了。可以使用useDelimiter()将分隔符修改为换行符"\n"
     * @param scan
     */
    private static void gain1(Scanner scan) {
        scan.useDelimiter("\n");   //屏蔽了这句代码的话,若输入的字符串中间含有空格,那么空格之后的数据就没有了
        System.out.println("请输入字符串");
        String str = scan.next();
        System.out.println(str);
    }

    /**
     * 使用正则表达式验证输入的数据
     * @param scan
     */
    private static void gain2(Scanner scan) {
        String pattern = "^[a-zA-Z0-9_\\.]+@[a-zA-Z0-9-]+[\\.a-zA-Z]+$";//定义正则表达式
        System.out.println("请输入邮箱地址:");
        String mail = null;
        if(scan.hasNext(pattern)) {   //判断输入格式是否正确
            mail = scan.next();
            System.out.println("你输入的邮箱是:"+mail);
        }else {
            System.out.println("你输入的邮箱不正确");
        }
    }

    /**
     * 从文件中获取数据
     * @param file
     */
    private static void gain(File file) {
        if(!(file.exists())) {  //判断文件是否存在
            System.out.println("文件不存在:");
            System.exit(0);
        }
        FileInputStream fis = null;
        Scanner scan = null;
        try {
            fis = new FileInputStream(file);
            scan = new Scanner(fis);
        }catch(IOException e) {
            e.printStackTrace();
        }
        StringBuffer sbu = new StringBuffer();  //定义StringBuffer类
        while(scan.hasNext()) {     //判断是否还有内容 
            sbu.append(scan.next()).append("\n");   //读取内容
        }
        System.out.println(sbu);  //输出读取的数据

    }
}

各个方法运行结果:
gain(scan)

请输入int型整数:
25
请输入float型小数:
0.324
请输入字符串:
lzq
整数:25
小数:0.324
字符串lzq 

gain1(scan)
屏蔽scan.useDelimiter(“\n”);

请输入字符串
zhhuc ncubs jsc67 
zhhuc

不屏蔽scan.useDelimiter(“\n”);

请输入字符串
lzjzgg xcb
lzjzgg xcb

gain2(sacn)

请输入邮箱地址:
2899349953@qq.com
你输入的邮箱是:2899349953@qq.com

gain(file);

锲而舍之
朽木不折
锲而不舍
金石可镂

猜你喜欢

转载自blog.csdn.net/QQ2899349953/article/details/81213640