BufferedReader的使用

JQInputData工具类:从键盘中获取各种数据

package BufferReader;
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class JQInputData {
    private static BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
    
    /**从键盘获取字符串*/
    public static String getString(String info){
        System.out.println(info);
        String str = null;
        try{
            str =  buf.readLine();
        }catch (IOException e){
            e.printStackTrace();
        }
        return str;
    }
    
    /**从键盘获取int类型数据*/
    public static int getInt(String info,String err) throws IOException{
        boolean flag = true;
        int tmp = 0;
        while(flag){
            String str = getString(info);
            if (str.matches("^-?[1-9]\\d*$")){ //里面的\要换成\\转意它
                tmp = Integer.parseInt(str);
                flag = false;
            }else{
                System.out.println(err);
            }
        }   
        return tmp;
    }
    
    /**从键盘获取float类型数据*/
    public static float getFloat(String info,String err){
        boolean flag = true;
        float tmp = 0;
        while(flag){
            String str = getString(info);
            if (str.matches("^-?([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0)$")){ 
                tmp = Float.parseFloat(str);
                flag = false;
            }else{
                System.out.println(err);
            }
        }   
        return tmp;
    }
    
    /**从键盘获取日期(2016-06-30)转成Date对象*/
    public static Date getDate(String info,String err) throws ParseException{
        boolean flag = true;
        Date tmp = null;
        while(flag){
            String str = getString(info);
            if (str.matches("([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))")){ 
                SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");  
                tmp=sdf.parse(str);  
                flag = false;
            }else{
                System.out.println(err);
            }
        }   
        return tmp;
    }
    
}

Test


package BufferReader;

import java.io.IOException;

public class Test {
    
    public static void main(String[] args) throws IOException{
        int result = JQInputData.getInt("请输入一个整数:","输入不符,请重新输入");
        System.out.println("你输入了数字:"+result);
        
        float result2= JQInputData.getFloat("\n请输入一个浮点数:","输入不符,请重新输入");
        System.out.println("你输入了数字:"+result);
        
        System.out.println("您输入了文字:"+JQInputData.getString("\n请输入文字:"));
    }
    
}

/*
 所有的输入字节数据都将存放在缓冲区中
 BufferReader类用于从缓冲区中读取内容,因为BufferReader只能接收字符流,
 所以需要用InputStreamReader将字节输入流System.in变为字符流
 */
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容