一篇文章带你搞定 Java 中的 BufferReader 类
文章目录一、基本概念二、键盘输入数据的标准格式三、相关操作实例一、基本概念BufferReader 类用于从缓冲区中读取内容,所有的输入字节数据都将放在缓冲区中,常用方法:由于 BufferReader 中定义的构造方法只能接收字符输入流的实例,所以必须使用字符输入流和字节输入流的转换类 InputStreamReader 将字节输入流 System.in 变为字符流:因为 Buffer...
·
一、基本概念
BufferReader 类用于从缓冲区中读取内容,所有的输入字节数据都将放在缓冲区中,常用方法:
readLine 一次读取一行
由于 BufferReader 中定义的构造方法只能接收字符输入流的实例,所以必须使用字符输入流和字节输入流的转换类 InputStreamReader 将字节输入流 System.in 变为字符流:
因为 BufferReader 只能接收字符流的缓冲区,因为每一个中文要占两个字符,所以需要将 System.in
这个字节的输入流变为字符的输入流
二、键盘输入数据的标准格式
将 System.in 变为字符流放入到 BufferedReader 后,可以通过 readLine() 方法等待用户输入信息。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test{
public static void main(String[] args) {
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);
}
}
此时可以发现程序没有了长度的限制,同时也可以正确接收中文,这是键盘输入数据的标准格式
三、相关操作实例
1. 加法操作
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class InputData{
private BufferedReader buf = null;
public InputData(){
//在类的构造方法中实例化
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 class Test{
public static void main(String[] args) throws Exception{
int i=0;
int j=0;
InputData input = new InputData();
i = input.getInt("请输入第一个数字:","输入的数据必须是数字,请重新输入!");
j = input.getInt("请输入第二个数字:","输入的数据必须是数字,请重新输入!");
System.out.println(i + "+" + j3 + "=" + (i+j));
}
}
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 d = 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{
d = sdf.parse(str);
}catch (ParseException e){
e.printStackTrace();
}
flag = false;
}else {
System.out.println(err);
}
}
return d;
}
}
2. 菜单显示
class Operate{
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("**选择的是查看操作");
}
}
class Menu{
public Menu(){
while (true){
this.show();//无限制调用菜单的显示
}
}
public void show(){
System.out.println("==== Xxxx系统 ====");
System.out.println("[1] 增加数据");
System.out.println("[2] 删除数据");
System.out.println("[3] 修改数据");
System.out.println("[4] 查看数据");
System.out.println("[0] 系统退出\n");
InputData input = new InputData();
int i = input.getInt("请选择:","请输入正确的选项!");
switch (i){
case 1: Operate.add();break;
case 2: Operate.delete();break;
case 3: Operate.update();break;
case 4: Operate.find();break;
case 0: System.exit(1);break;//系统退出
default: System.out.println("请选择正确的操作");
}
}
}
public class Root{
public static void main(String[] args) {
new Menu();
}
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献18条内容
所有评论(0)