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类的更多相关文章
- 字节流和字符流(BufferedReader类和BufferedWriter类)
一般情况下,为了提高字符文件读/写效率,通常需要为文件读/写器添加一个缓冲读/写器,分别为BufferedReader类和BufferedWriter类. 1:BufferedReader类 假如上面 ...
- Java :BufferedWriter类和BufferedReader类的构造方法、主要方法
BufferedWriter 和 BufferedReader 为带有默认缓冲的字符输出输入流,因为有缓冲区所以效率比没有缓冲区的高. 一.BufferedWriter 类 构造方法:buffered ...
- BufferedReader类里面mark(int readAheadLimit)中readAheadLimit到底代表什么
昨天用到了BufferedReader类里面mark(int readAheadLimit)方法,对于文档里面readAheadLimit的解释有些没弄懂,就翻开源码研究.具体的源码分析可以参见htt ...
- 下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是( )。
下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt.File构造函数中正确的路径和文件名的表示是( ). ./表示当前项目的路径../表示当 ...
- java IO,bufferedReader类
1,掌握bufferedreader类作用 2,掌握键盘输入的基本格式. Buffer:表示缓冲区,之前的StringBuffer,缓冲区中的内容可以更改,可以提高效率. 如果要想接收任意长度的数据, ...
- JAVA BufferedReader 类从标准输入读取数据
1,从标准输入上建立输入流: BufferedReader localReader = new BufferedReader( new InputStreamReader(System.in)); S ...
- 深入研究java.lang.Runtime类
一.概述 Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接. 一般不能实例化一个Runtime对象, ...
- 浅析Java.lang.Runtime类
一.概述 Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接. 一般不能实例化一个Runtime对象, ...
- Scanner和BufferedReader
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
随机推荐
- js实现登陆页面的拖拽功能
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>登 ...
- extjs的一些简单动画1
Ext.Element 类也定义了部分动画函数.我们先来看看Ext.Fx 类中的重要方法. 1.slideIn ( [String anchor], [Object options] ): 功能:滑入 ...
- LINUX下PHP开启短标签short_open_tag支持
LINUX下PHP开启短标签short_open_tag支持 以CENTOS为例: 找到php.ini #find / -name php.ini #/etc/php.ini 编辑php.ini #v ...
- ASP.Net Web Form<一> aspx文件编译及呈现
对比复习下JSP 1.jsp的本质是Servlet ,会在第一次被访问时会被翻译成一个类文件,从此对这个页面的访问都是由这个类文件执行后进行输出. aspx 本质是IHttpHandler 2.jsp ...
- 95C
跑dijiestra每个点的最短路径 #include<iostream> #include<Vector> #include<cstring> #include& ...
- jquery $.each 和for怎么跳出循环终止本次循环
1.for循环中我们使用continue:终止本次循环计入下一个循环,使用break终止整个循环. 2.而在jquery中 $.each则对应的使用return true 和return false. ...
- 【BZOJ-1179】Atm Tarjan + SPFA
1179: [Apio2009]Atm Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 2407 Solved: 993[Submit][Status ...
- C#中的斜变性和逆变性的详解
1,问题 大家可以看到定义泛型类型的可以看到out和in这两个关键字,那么具体代表什么意思呢? 2,文字解释 C# 4.0通过两个关键字:out和in来分别支持以协变和逆变的方式使用泛型. 如果某个返 ...
- tyvj2018 小猫爬山
之前做过一道题"破锣摇滚乐队",把猫都编了号,每辆车只能装一些编号递增的猫,而且前一辆车的猫编号都比后一辆车小.那道题的DP状态是:f[i][j]表示装了前i只猫,使用了j辆车时第 ...
- dedecms /plus/stow.php Twice SQL Injection
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 收藏文章功能$title变量未过滤,造成二次注入 Relevant Li ...