数据输入实例一

来源:互联网 发布:虚拟专用网络市场分析 编辑:程序博客网 时间:2024/06/05 09:49
/*输入数据,最常见可能是:整数,小数,日期,字符串,所以最好将其设计出一个专门的输入数据类型
  完成数据输入的功能,而且在此类中还可以对输入的数据进行验证
  完成专门处理输入的数据的类,但是只能得到整数和字符串

*/

import java.io.*;
import java.util.*;
import java.text.*;


public class InputData02{
private BufferedReader buf=null;
public InputData02(){
this.buf=new BufferedReader(new InputStreamReader(System.in));
}
public String getString(String info){  //得到字符串信息
String temp=null;
System.out.print(info);  //打印提示信息
try{
temp=this.buf.readLine();  //接收数据
}catch(IOException e){
e.printStackTrace();
}
return temp;
}
public int getInt(String info,String err){//得到一个整型数据
int temp=0;  //接收转型数字
String str=null;  //接收未转型时的字符串
boolean flag=true;
while(flag){
str=this.getString(info);
if(str.matches("^\\d+$")){  //判断是否由字符串组成
temp=Integer.parseInt(str);
flag=false;  
}else{
System.out.println(err);
}
}
return temp;
}
public float getFloat(String info,String err){  //得到一个小数数据
float temp=0;
String str=null;
boolean flag=true;
while(flag){
str=this.getString(info);
if(str.matches("^\\d+.?\\d+$")){
temp=Float.parseFloat(str);
flag=false;
}else{
System.out.println(err);
}
}
return temp;
}
public Date getDate(String info,String err){  //得到一个日期
Date temp=null;
String str=null;
boolean flag=true;
while(flag){
str=this.getString(info);
if(str.matches("^\\d{4}-\\d{2}-\\d{2}$")){  //判断是否由日期字符串组成
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try{
temp=sdf.parse(str); //将字符串变为Date类型
}catch(Exception e){
e.printStackTrace();
}
flag=false;
}else{
System.out.println(err);
}
}
return temp;
}
};

测试类:

import java.io.*;
import java.util.*;
import java.text.*;
public class SystemCase03{
public static void main(String args[]){
int i=0;
 float j=0f;
 Date date=null;
 InputData02 input=new InputData02();
i=input.getInt("请输入第一个数据:","输入的不是整数,请重新输入!");
 j=input.getFloat("请输入小数:","输入的不是小数,请重新输入!");
 date=input.getDate("请输入日期,格式为(yyyy-mm-dd):","输入的不是日期格式,请重新输入!");
 System.out.println("输入的整数为:"+i);
 System.out.println("输入的小数为:"+j);
 System.out.println("输入的日期为:"+date);
}
};