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变为字符流
*/