〖JAVA IO〗_IO操作实例笔记

 

〖JAVA IO〗_IO操作实例笔记

分类: Java
〖JAVA IO〗_IO操作实例笔记

本章目标:
掌握java数据数据的操作实例

实例一:加法操作

实例二:菜单显示

3.本实例主要采用的知识

1、键盘输入数据的标准格式
2、日期的转换,以及包装类的使用
3、类的设计思路。

4.具体内容

实例一代码:

[java]  view plain copy print ?
  1. import java.io.*;  
  2. public class ExecDemo01{  
  3.     public static void main(String args[]) throws Exception{  
  4.         int i=0;  
  5.         int j=0;  
  6.         BufferedReader buf = null;  
  7.         buf = new BufferedReader(new InputStreamReader(System.in));  
  8.         String str=null;  
  9.         System.out.println("请输入第一个数字");  
  10.         str = buf.readLine();    //接收数据  
  11.         i = Integer.parseInt(str);  
  12.         System.out.println("请输入第二个数字");  
  13.         str = buf.readLine();    //接收数据  
  14.         j = Integer.parseInt(str);  
  15.         System.out.println(i+"+"+i+"="+(i+j));  
  16.     }  
  17. }  



以上确实完成了,但是有以下问题:
    a.现在信息是由用户输入的,用户输入的如果不是数字呢?
    b.本程序只能输入整数
    c.代码重复,一使用输入数据,则肯定使用BufferedReader,所以代码重复了。

此时,需要对类进行更加合理的划分。
输入数据,最可能的是:整数、小数、日期、字符串,所以最好将其设计出一个专门的输入数据类型,完成输入数据的功能,而且在此类中还可以对输入的数据进行验证。
下面:完成专门处理输入数据的类,但是只能得到整数和字符串。

[java]  view plain copy print ?
  1. import java.io.* ;  
  2. import java.util.* ;  
  3. import java.text.* ;  
  4. public class InputData{  
  5.     private BufferedReader buf = null ;  
  6.     public InputData(){// 只要输入数据就要使用此语句  
  7.         this.buf = new BufferedReader(new InputStreamReader(System.in)) ;  
  8.     }  
  9.     public String getString(String info){    // 得到字符串信息  
  10.         String temp = null ;  
  11.         System.out.print(info) ;    // 打印提示信息  
  12.         try{  
  13.             temp = this.buf.readLine() ;    // 接收数据  
  14.         }catch(IOException e){  
  15.             e.printStackTrace() ;  
  16.         }  
  17.         return temp ;  
  18.     }  
  19.     public int getInt(String info,String err){    // 得到一个整数的输入数据  
  20.         int temp = 0 ;  
  21.         String str = null ;  
  22.         boolean flag = true ;    // 定义一个标记位  
  23.         while(flag){  
  24.             str = this.getString(info) ;    // 接收数据  
  25.             if(str.matches("^\\d+$")){    // 判断是否由数字组成  
  26.                 temp = Integer.parseInt(str) ;    // 转型  
  27.                 flag = false ;    // 结束循环  
  28.             }else{  
  29.                 System.out.println(err) ;    // 打印错误信息  
  30.             }  
  31.         }  
  32.         return temp ;  
  33.     }  
  34.     public float getFloat(String info,String err){    // 得到一个小数的输入数据  
  35.         float temp = 0 ;  
  36.         String str = null ;  
  37.         boolean flag = true ;    // 定义一个标记位  
  38.         while(flag){  
  39.             str = this.getString(info) ;    // 接收数据  
  40.             if(str.matches("^\\d+.?\\d+$")){    // 判断是否由数字组成  
  41.                 temp = Float.parseFloat(str) ;    // 转型  
  42.                 flag = false ;    // 结束循环  
  43.             }else{  
  44.                 System.out.println(err) ;    // 打印错误信息  
  45.             }  
  46.         }  
  47.         return temp ;  
  48.     }  
  49.     public Date getDate(String info,String err){    // 得到一个小数的输入数据  
  50.         Date temp = null ;  
  51.         String str = null ;  
  52.         boolean flag = true ;    // 定义一个标记位  
  53.         while(flag){  
  54.             str = this.getString(info) ;    // 接收数据  
  55.             if(str.matches("^\\d{4}-\\d{2}-\\d{2}$")){    // 判断是否由数字组成  
  56.                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;  
  57.                 try{  
  58.                     temp = sdf.parse(str) ;    // 将字符串变为Date型数据  
  59.                 }catch(Exception e){}  
  60.                 flag = false ;    // 结束循环  
  61.             }else{  
  62.                 System.out.println(err) ;    // 打印错误信息  
  63.             }  
  64.         }  
  65.         return temp ;  
  66.     }  
  67. };  



测试 InputDate类

[java]  view plain copy print ?
  1. import java.io.* ;  
  2. import java.util.* ;  
  3. public class TestInput{  
  4.     public static void main(String args[]) throws Exception{  
  5.         InputData input = new InputData() ;  
  6.         // float f = input.getFloat("请输入小数:","输入的不是小数,请重新输入!") ;  
  7.         // System.out.println("小数:" + f) ;  
  8.         Date d = input.getDate("请输入日期,格式为(yyyy-mm-dd):","输入的日期格式不正确,请重新输入") ;  
  9.         System.out.println("日期" + d) ;  
  10.     }  
  11. };  



最终代码:

[java]  view plain copy print ?
  1. import java.io.* ;  
  2. public class ExecDemo01{  
  3.     public static void main(String args[]) throws Exception{  
  4.         int i = 0 ;  
  5.         int j = 0 ;  
  6.         BufferedReader buf = null ;        // 接收键盘的输入数据  
  7.         buf = new BufferedReader(new InputStreamReader(System.in)) ;  
  8.         String str = null ;    // 接收数据  
  9.         System.out.print("请输入第一个数字:") ;  
  10.         str = buf.readLine() ;    // 接收数据  
  11.         i = Integer.parseInt(str) ;    // 将字符串变为整数  
  12.         System.out.print("请输入第二个数字:") ;  
  13.         str = buf.readLine() ;    // 接收数据  
  14.         j = Integer.parseInt(str) ;    // 将字  
  15.         System.out.println(i + " + " + j + " = " + (i + j)) ;  
  16.     }  
  17. };  





4.2、菜单显示

菜单显示在各个系统中都是比较常见的功能。
现在是要求一个菜单的显示,但是实际上每个选项之后都肯定会有自己的若干操作,所以为了方便操作,建立以下几个类:
Menu(专门显示菜单信息)  -> Operate(表示操作类)

[java]  view plain copy print ?
  1. public class Operate{  
  2.     public static void add(){    // 增加操作  
  3.         System.out.println("** 选择的是增加操作") ;  
  4.     }  
  5.     public static void delete(){    // 删除操作  
  6.         System.out.println("** 选择的是删除操作") ;  
  7.     }  
  8.     public static void update(){    // 更新操作  
  9.         System.out.println("** 选择的是更新操作") ;  
  10.     }  
  11.     public static void find(){    // 查看操作  
  12.         System.out.println("** 选择的是查看操作") ;  
  13.     }  
  14. };  


[java]  view plain copy print ?
  1. public class Menu{  
  2.     public Menu(){  
  3.         while(true){  
  4.             this.show() ;        // 无限制调用菜单的显示  
  5.         }  
  6.     }  
  7.     public void show(){  
  8.         System.out.println("===== Xxx系统 =====") ;  
  9.         System.out.println("    [1]、增加数据") ;  
  10.         System.out.println("    [2]、删除数据") ;  
  11.         System.out.println("    [3]、修改数据") ;  
  12.         System.out.println("    [4]、查看数据") ;  
  13.         System.out.println("    [0]、系统退出\n") ;  
  14.         InputData input = new InputData() ;  
  15.         int i = input.getInt("请选择:","请输入正确的选项!") ;  
  16.         switch(i){  
  17.             case 1:{  
  18.                 Operate.add() ;        // 调用增加操作  
  19.                 break ;  
  20.             }  
  21.             case 2:{  
  22.                 Operate.delete() ;    // 调用删除操作  
  23.                 break ;  
  24.             }  
  25.             case 3:{  
  26.                 Operate.update() ;    // 调用更新操作  
  27.                 break ;  
  28.             }  
  29.             case 4:{  
  30.                 Operate.find() ;        // 调用查看操作  
  31.                 break ;  
  32.             }  
  33.             case 0:{  
  34.                 System.exit(1) ;        // 系统退出  
  35.                 break ;  
  36.             }  
  37.             default:{  
  38.                 System.out.println("请选择正确的操作!") ;  
  39.             }  
  40.         }  
  41.     }  
  42. };  


[java]  view plain copy print ?
  1. import java.io.* ;  
  2. public class ExecDemo03{  
  3.     public static void main(String args[]) throws Exception{  
  4.         new Menu() ;  
  5.     }  
  6. };  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值