BufferedReader类用于从缓冲区中读取内容,多有的输入字节数据都将放在缓冲区中。
BufferedReader中定义的构造方法只能接收字符输入流的实例,所以必须使用字符输入流和字节输入流的转换类InputStreamReader将字节输入流System.in变为字符流
以下程序没有长度的限制,也可以正确地接收中文,所以以下代码就是键盘输入数据的标准格式
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; //================================================= // File Name : BufferedReader_demo //------------------------------------------------------------------------------ // Author : Common //主类 //Function : BufferedReader_demo System; public class BufferedReader_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 BufferedReader buf = null; //声明BufferedReader对象 buf = new BufferedReader(new InputStreamReader(System.in)); //实例化BufferedReader对象 String str = null; //接收输入内容 System.out.print("请输入内容:"); try{ str = buf.readLine(); //读取输入内容 }catch(IOException e){ //要进行异常处理 e.printStackTrace(); } System.out.println("输入的内容:"+str); } }
实例操作一:加法操作
输入两个数字,并让两个数字相加
可以实现整数、小数、字符串和日期类型数据的输入
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; //================================================= // File Name : BufferedReader_demo //------------------------------------------------------------------------------ // Author : Common //类名:InputData //属性: //方法: class InputData{ private BufferedReader buf = null; //声明BufferReader对象 public InputData() { //构造方法 this.buf = new BufferedReader(new InputStreamReader(System.in)); //实例化BufferedReader对象 } public String getString(String info){ //从此方法中得到字符串的信息 String temp = null; //接收输入内容 System.out.println(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 = 0f; 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 d = null; String str = null; boolean flag = true; //定义一个循环的处理标志 while(flag){ str = this.getString(info); if(str.matches("^\d{4}+\d{2}$")){ //符合小数的格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try{ d = sdf.parse(str); //将字符串变为Date型数据 }catch(ParseException e){ e.printStackTrace(); } flag = false; //更改标志位后,将退出循环 }else{ System.out.println(err); } } return d; } } //主类 //Function : BufferedReader_demo System; public class BufferedReader_demo2 { public static void main(String[] args) { // TODO 自动生成的方法存根 int i; int j; InputData input = new InputData(); i = input.getInt("请输入第一个数字:", "输入的数据必须是数字,请重新输入!"); j = input.getInt("请输入第二个数字:", "输入的数据必须是数字,请重新输入!"); System.out.println(i+"+"+j+"="+(i+j)); } }
实例操作二:菜单显示
//================================================= // File Name : menu_demo //------------------------------------------------------------------------------ // Author : Common //类名:Operation //属性: //方法: class Operation{ public static void add(){ System.out.println("你选择的是增加操作!"); } public static void delete(){ System.out.println("你选择的是删除操作!"); } public static void update(){ System.out.println("你选择的是更新操作!"); } public static void find(){ System.out.println("你选择的是查看操作!"); } } //主类 //Function : menu_demo; public class menu_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 while(true){ show(); } } public static void show(){ System.out.println("菜单系统"); System.out.println("【1】增加数据"); System.out.println("【2】删除数据"); System.out.println("【3】修改数据"); System.out.println("【4】查看数据"); System.out.println("【0】系统退出"); InputData input = new InputData(); int i = input.getInt("请选择", "请输入正确的选项"); switch(i){ case 1:{ Operation.add(); break; } case 2:{ Operation.delete(); break; } case 3:{ Operation.update(); break; } case 4:{ Operation.find(); break; } case 0:{ System.exit(1); break; } default:{ System.out.println("请选择正确的操作"); } } } }