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类的更多相关文章

  1. 字节流和字符流(BufferedReader类和BufferedWriter类)

    一般情况下,为了提高字符文件读/写效率,通常需要为文件读/写器添加一个缓冲读/写器,分别为BufferedReader类和BufferedWriter类. 1:BufferedReader类 假如上面 ...

  2. Java :BufferedWriter类和BufferedReader类的构造方法、主要方法

    BufferedWriter 和 BufferedReader 为带有默认缓冲的字符输出输入流,因为有缓冲区所以效率比没有缓冲区的高. 一.BufferedWriter 类 构造方法:buffered ...

  3. BufferedReader类里面mark(int readAheadLimit)中readAheadLimit到底代表什么

    昨天用到了BufferedReader类里面mark(int readAheadLimit)方法,对于文档里面readAheadLimit的解释有些没弄懂,就翻开源码研究.具体的源码分析可以参见htt ...

  4. 下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是( )。

    下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt.File构造函数中正确的路径和文件名的表示是(    ). ./表示当前项目的路径../表示当 ...

  5. java IO,bufferedReader类

    1,掌握bufferedreader类作用 2,掌握键盘输入的基本格式. Buffer:表示缓冲区,之前的StringBuffer,缓冲区中的内容可以更改,可以提高效率. 如果要想接收任意长度的数据, ...

  6. JAVA BufferedReader 类从标准输入读取数据

    1,从标准输入上建立输入流: BufferedReader localReader = new BufferedReader( new InputStreamReader(System.in)); S ...

  7. 深入研究java.lang.Runtime类

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

  8. 浅析Java.lang.Runtime类

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

  9. Scanner和BufferedReader

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

随机推荐

  1. __getattribute__

    class Foo: def __init__(self,x): self.x = x def __getattribute__(self, item): print('不管是否纯在,我都会执行') ...

  2. Jenkins的maven工程打包的时候怎么指定不同环境的配置文件

    http://outofmemory.cn/code-snippet/6643/maven-profile-define-enviroment-package 在打包的时候我们添加上 这里我们指定配置 ...

  3. 标题栏ToolBar

    使用标题栏ToolBar 首先需要在AndroidManifest.xml中修改 application主题或者activity主题       隐藏原生标题栏 在styles.xml中自定义主题 a ...

  4. 【CodeVS 3160】最长公共子串

    http://codevs.cn/problem/3160/ 看了好久的后缀自动机_(:з」∠)_ 对A串建立SAM,用B串去匹配A串SAM,如果在当前节点走不下去,就跳到当前节点的parent(类似 ...

  5. 区间DP HDU 4283

    t个数据 n个权值 1->n 可以入栈调整顺序 花费 第k个出来 w[i]*(k-1); 求花费最少 #include<stdio.h> #include<string.h&g ...

  6. ivy,ivyde插件-eclipse

    官方共享更新磁盘下载 http://www.apache.org/dist/ant/ivyde/updatesite/ http://ant.apache.org/ivy/download.cgi 简 ...

  7. Office 2013 Pro Plus Vol激活

    先确认自己是office2013 vol(大客户版),然后cmd(管理员)里面运行如下命令: cd "C:\Program Files\Microsoft Office\Office15&q ...

  8. RunLoop的深入了解

    RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何 ...

  9. C++标准库简介、与STL的关系。

    转自http://www.cnblogs.com/xiongjiaji/archive/2011/06/22/2476490.html C++标准库的所有头文件都没有扩展名.C++标准库的内容总共在5 ...

  10. 【BZOJ-3437】小P的牧场 DP + 斜率优化

    3437: 小P的牧场 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 705  Solved: 404[Submit][Status][Discuss ...