一、基本概念
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);
}
}
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));
}
}
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
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;
}
}
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
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();
}
}
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46