BufferedReader类

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("请选择正确的操作");
			}
		}
	}

}

 

你可能感兴趣的:(BufferedReader类)