分类: Java
〖JAVA IO〗_IO操作实例笔记
本章目标:
掌握java数据数据的操作实例
实例一:加法操作
实例二:菜单显示
3.本实例主要采用的知识
1、键盘输入数据的标准格式
2、日期的转换,以及包装类的使用
3、类的设计思路。
4.具体内容
实例一代码:
以上确实完成了,但是有以下问题:
a.现在信息是由用户输入的,用户输入的如果不是数字呢?
b.本程序只能输入整数
c.代码重复,一使用输入数据,则肯定使用BufferedReader,所以代码重复了。
此时,需要对类进行更加合理的划分。
输入数据,最可能的是:整数、小数、日期、字符串,所以最好将其设计出一个专门的输入数据类型,完成输入数据的功能,而且在此类中还可以对输入的数据进行验证。
下面:完成专门处理输入数据的类,但是只能得到整数和字符串。
测试 InputDate类
最终代码:
4.2、菜单显示
菜单显示在各个系统中都是比较常见的功能。
现在是要求一个菜单的显示,但是实际上每个选项之后都肯定会有自己的若干操作,所以为了方便操作,建立以下几个类:
Menu(专门显示菜单信息) -> Operate(表示操作类)
本章目标:
掌握java数据数据的操作实例
实例一:加法操作
实例二:菜单显示
3.本实例主要采用的知识
1、键盘输入数据的标准格式
2、日期的转换,以及包装类的使用
3、类的设计思路。
4.具体内容
实例一代码:
- import java.io.*;
- public class ExecDemo01{
- public static void main(String args[]) throws Exception{
- int i=0;
- int j=0;
- BufferedReader buf = null;
- buf = new BufferedReader(new InputStreamReader(System.in));
- String str=null;
- System.out.println("请输入第一个数字");
- str = buf.readLine(); //接收数据
- i = Integer.parseInt(str);
- System.out.println("请输入第二个数字");
- str = buf.readLine(); //接收数据
- j = Integer.parseInt(str);
- System.out.println(i+"+"+i+"="+(i+j));
- }
- }
以上确实完成了,但是有以下问题:
a.现在信息是由用户输入的,用户输入的如果不是数字呢?
b.本程序只能输入整数
c.代码重复,一使用输入数据,则肯定使用BufferedReader,所以代码重复了。
此时,需要对类进行更加合理的划分。
输入数据,最可能的是:整数、小数、日期、字符串,所以最好将其设计出一个专门的输入数据类型,完成输入数据的功能,而且在此类中还可以对输入的数据进行验证。
下面:完成专门处理输入数据的类,但是只能得到整数和字符串。
- import java.io.* ;
- import java.util.* ;
- import java.text.* ;
- public 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 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 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) ; // 打印错误信息
- }
- }
- return temp ;
- }
- };
测试 InputDate类
- import java.io.* ;
- import java.util.* ;
- public class TestInput{
- public static void main(String args[]) throws Exception{
- InputData input = new InputData() ;
- // float f = input.getFloat("请输入小数:","输入的不是小数,请重新输入!") ;
- // System.out.println("小数:" + f) ;
- Date d = input.getDate("请输入日期,格式为(yyyy-mm-dd):","输入的日期格式不正确,请重新输入") ;
- System.out.println("日期" + d) ;
- }
- };
最终代码:
- import java.io.* ;
- public class ExecDemo01{
- public static void main(String args[]) throws Exception{
- int i = 0 ;
- int j = 0 ;
- BufferedReader buf = null ; // 接收键盘的输入数据
- buf = new BufferedReader(new InputStreamReader(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)) ;
- }
- };
4.2、菜单显示
菜单显示在各个系统中都是比较常见的功能。
现在是要求一个菜单的显示,但是实际上每个选项之后都肯定会有自己的若干操作,所以为了方便操作,建立以下几个类:
Menu(专门显示菜单信息) -> Operate(表示操作类)
- public 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("** 选择的是查看操作") ;
- }
- };
- public class Menu{
- public Menu(){
- while(true){
- this.show() ; // 无限制调用菜单的显示
- }
- }
- public void show(){
- 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 = 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("请选择正确的操作!") ;
- }
- }
- }
- };
- import java.io.* ;
- public class ExecDemo03{
- public static void main(String args[]) throws Exception{
- new Menu() ;
- }
- };