java io 实例_JAVA 的IO操作实例

实例要求:

1,加法操作:

键盘输入两个数字,完成加法操作。因为从键盘接收过来的内容都是通过字符串形式存放的,所以此时直接通过包装类

Integer将字符串变为基本数据类型。

2,菜单显示:

58fee1e1f3568b59238497c368760523.png

采用的知识点:

1,键盘输入数据的标准格式。

2,日期格式的转换。

3,类的设计思路。

具体内容:

实例1:加法操作:

遇到问题后,先开发一个简单模型:

package类集;importjava.io.BufferedReader;importjava.io.InputStreamReader;public classFilloutput {public static void main(String args[]) throwsException{int i = 0;int j = 0;

BufferedReader buf= null ; //接收键盘的输入数据

buf = new BufferedReader(newInputStreamReader(System.in)) ;

String str= null ; //接收数据

System.out.print("请输入第一个数字:") ;

str= buf.readLine() ; //接收数据

i = Integer.parseInt(str) ; //将字符串变为整数

System.out.print("请输入第二个数字:") ;

str= buf.readLine() ; //接收数据

j = Integer.parseInt(str) ; //将字

System.out.println(i + " + " + j + " = " + (i +j)) ;

}

}

以上确实完成功能:但是存在问题:

1,现在信息是用户输入,如果输入不是数字呢?

2,本程序只能输入整数。

3,代码重复,多次使用BufferedReader。

此时,需要对类进行更加合理划分。

输入数据,最常见整数,小数,日期。字符串,最好设计一个专门输入数据类型。完成输入数据功能,在类中可以对输入数据验证。

下面:完成专门输入数据的类,但是只能看到整数和字符串。

下面都是通过正则表达式对输入数据进行验证,并且通过while,来循环调用输入,设置标志结束循环。

package类集;import java.io.*;import java.util.*;import java.text.*;public classInputData{private BufferedReader buf = null;public InputData(){//只要输入数据就要使用此语句

this.buf = new BufferedReader(newInputStreamReader(System.in)) ;

}public String getString(String info){ //得到字符串信息

String temp = null;

System.out.print(info) ;//打印提示信息

try{

temp= this.buf.readLine() ; //接收数据

}catch(IOException e){

e.printStackTrace() ;

}returntemp ;

}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) ;//打印错误信息

}

}returntemp ;

}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) ;//打印错误信息

}

}returntemp ;

}public Date getDate(String info,String err){ //得到一个小数的输入数据

Date temp = 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{

temp= sdf.parse(str) ; //将字符串变为Date型数据

}catch(Exception e){}

flag= false ; //结束循环

}else{

System.out.println(err) ;//打印错误信息

}

}returntemp ;

}

};

以上的日期转换操作,非常重要。在开发中都要使用到。

重新写输入的类调用上面的类。

package类集;importjava.io.BufferedReader;importjava.io.InputStreamReader;public classFilloutput {public static void main(String args[]) throwsException{int i = 0;int j = 0;

InputData input= newInputData() ;

i= input.getInt("请输入第一个数字:","输入的数据必须是数字,请重新输入!") ;

j= input.getInt("请输入第二个数字:","输入的数据必须是数字,请重新输入!") ;

System.out.println(i+ " + " + j + " = " + (i +j)) ;

}

}

与之前代码相比,此处更合理,因为只要想从键盘输入整数,直接使用InputData即可。

测试输入日期:

package类集;importjava.util.Date;public classFilloutput {public static void main(String args[]) throwsException{

InputData input= newInputData() ;//float f = input.getFloat("请输入小数:","输入的不是小数,请重新输入!") ;//System.out.println("小数:" + f) ;

Date d = input.getDate("请输入日期,格式为(yyyy-mm-dd):","输入的日期格式不正确,请重新输入") ;

System.out.println("日期" +d) ;

}

}

测试输入小数:

package类集;importjava.util.Date;public classFilloutput {public static void main(String args[]) throwsException{

InputData input= newInputData() ;float f = input.getFloat("请输入小数:","输入的不是小数,请重新输入!") ;

System.out.println("小数:" +f) ;//Date d = input.getDate("请输入日期,格式为(yyyy-mm-dd):","输入的日期格式不正确,请重新输入") ;//System.out.println("日期" + d) ;

}

}

实例2:菜单显示:

现在是要求一个菜单显示,但是每个选项之后肯定会有自己的若干操作,所以为了方便操作,建立以下几个类。

Menu类(专门显示菜单信息),Operate(表示操作类)。

需要一个Menu类显示菜单,但是在显示的时候因为每一操作完成后都应该把菜单显示出来。所以肯定是循环调用的过程。

操作类:

package类集;public classOperate{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("** 选择的是查看操作") ;

}

};

菜单类:

package类集;public classMenu{publicMenu(){while(true){this.show() ; //无限制调用菜单的显示

}

}public voidshow(){

System.out.println("===== Xxx系统 =====") ;

System.out.println(" [1]、增加数据") ;

System.out.println(" [2]、删除数据") ;

System.out.println(" [3]、修改数据") ;

System.out.println(" [4]、查看数据") ;

System.out.println(" [0]、系统退出\n") ;

InputData input= newInputData() ;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("请选择正确的操作!") ;

}

}

}

};

真正调用菜单类,菜单类里面执行输入操作,再调用操作类,

package类集;public classFilloutput {public static void main(String args[]) throwsException{newMenu() ;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值