3.6.1、练习一

完成以下功能

通过程序输入两个数字,之后进行两个数字的相加操作,并把结果打印输出。

要求:如果用户输入的不是数字,则应该提示用户输入错误,之后要求用户重新输入。

? 字符串 ? 整型:Integer.parseInt(String str)

A、 基础模型

import java.io.* ;
 public class IODemo30{
 public static void main(String args[]) throws Exception{
 BufferedReader buf = null ;
 buf = new BufferedReader(new InputStreamReader(System.in)) ;
 int x = 0 ;
 int y = 0 ;
 System.out.print("输入第一个数字:") ;
 String str = null ;
 str = buf.readLine() ;
 x = Integer.parseInt(str) ;
 System.out.print("输入第二个数字:") ;
 str = buf.readLine() ;
 y = Integer.parseInt(str) ;
 System.out.println("计算结果:" + x + " + " + y + " = " + (x+y)) ;
 }
 };

B、 为程序中加入判断

因为数据是由用户输入的,所以必须对输入的内容进行验证。使用正则表达式。

import java.io.* ;
 public class IODemo31{
 public static void main(String args[]) throws Exception{
 BufferedReader buf = null ;
 buf = new BufferedReader(new InputStreamReader(System.in)) ;
 int x = 0 ;
 int y = 0 ;
 boolean flag = true ;
 System.out.print("输入第一个数字:") ;
 String str = null ;
 while(flag){
    str = buf.readLine() ;
    if(str.matches("+")){
     x = Integer.parseInt(str) ;
     flag = false ;
    }else{
     System.out.print("输入的不是数字,请重新输入:") ;
    }
 }
 System.out.print("输入第二个数字:") ;
 flag = true ;
 while(flag){
    str = buf.readLine() ;
    if(str.matches("+")){
     y = Integer.parseInt(str) ;
     flag = false ;
    }else{
     System.out.print("输入的不是数字,请重新输入:") ;
    }
 }
 System.out.println("计算结果:" + x + " + " + y + " = " + (x+y)) ;
 }
 }

如果现在要求连续输入10个数字,则以上代码要重复10遍,下面设计一个输入数据的类,要求可以通过此类得到正确的整数、小数、日期(yyyy-mm-dd),和字符串,问此类如何设计,并将此类应用与之前的程序之上。

import java.io.* ;
 import java.util.* ;
 import java.text.* ;
 class InputData{
 private BufferedReader buf = null ;
 public InputData(){
 this.buf = new BufferedReader(new InputStreamReader(System.in)) ;
 }
 public String getString(String info){
 String str = null ;
 System.out.print(info) ;
 try{
    str = this.buf.readLine() ;
 }catch(Exception e){}
 return str ;
 }
 public int getInt(String info){
 int temp = 0 ;
 boolean flag = true ;
 String str = null ;
 while(flag){
    try{
     str = this.getString(info) ;
     if(str.matches("+")){
      temp = Integer.parseInt(str) ;
      flag = false ;
     }else{
      System.out.print("输入的不是数字,请重新输入,") ;
     }
    }catch(Exception e){
     System.out.print("输入的不是数字,请重新输入,") ;
    }
 }
 return temp ;
 }
 public float getFloat(String info){
 float temp = 0 ;
 boolean flag = true ;
 String str = null ;
 while(flag){
    try{
     str = this.getString(info) ;
     if(str.matches("}")){
      temp = Float.parseFloat(str);
      flag = false ;
     }else{
      System.out.print("输入的不是数字,请重新输入,") ;
     }
    }catch(Exception e){
     System.out.print("输入的不是数字,请重新输入,") ;
    }
 }
 return temp ;
 }
 public Date getDate(String info){
 Date temp = null ;
 boolean flag = true ;
 String str = null ;
 while(flag){
    try{
     str = this.getString(info) ;
     if(str.matches("}")){
      // 把一个字符传变为Date类型
      temp = new SimpleDateFormat("yyyy-MM-dd").parse(str) ;
      flag = false ;
     }else{
      System.out.print("输入的不是日期,请重新输入,") ;
     }
    }catch(Exception e){
     System.out.print("输入的不是日期,请重新输入,") ;
    }
 }
 return temp ;
 }
 }
 public class IODemo32{
 public static void main(String args[]) throws Exception{
 InputData input = new InputData() ;
 int x = input.getInt("输入第一个数字:") ;
 int y = input.getInt("输入第二个数字:") ;
 System.out.println("计算结果:" + x + " + " + y + " = " + (x+y)) ;
 System.out.println(input.getFloat("输入小数:")) ;
 System.out.println(input.getDate("输入日期:")) ;
 }
 }

3.6.2、练习二

设计一个菜单程序

用户运行程序之后,可以显示一个菜单:

[1]、输入数据

[2]、查看数据

[3]、修改数据

[4]、退出系统

请选择:

提示:可以通过switch完成

import java.io.* ;
 import java.util.* ;
 import java.text.* ;
 class InputData{
 private BufferedReader buf = null ;
 public InputData(){
 this.buf = new BufferedReader(new InputStreamReader(System.in)) ;
 }
 public String getString(String info){
 String str = null ;
 System.out.print(info) ;
 try{
    str = this.buf.readLine() ;
 }catch(Exception e){}
 return str ;
 }
 public int getInt(String info){
 int temp = 0 ;
 boolean flag = true ;
 String str = null ;
 while(flag){
    try{
     str = this.getString(info) ;
     if(str.matches("+")){
      temp = Integer.parseInt(str) ;
      flag = false ;
     }else{
      System.out.print("输入的不是数字,请重新输入,") ;
     }
    }catch(Exception e){
     System.out.print("输入的不是数字,请重新输入,") ;
    }
 }
 return temp ;
 }
 public float getFloat(String info){
 float temp = 0 ;
 boolean flag = true ;
 String str = null ;
 while(flag){
    try{
     str = this.getString(info) ;
     if(str.matches("}")){
      temp = Float.parseFloat(str);
      flag = false ;
     }else{
      System.out.print("输入的不是数字,请重新输入,") ;
     }
    }catch(Exception e){
     System.out.print("输入的不是数字,请重新输入,") ;
    }
 }
 return temp ;
 }
 public Date getDate(String info){
 Date temp = null ;
 boolean flag = true ;
 String str = null ;
 while(flag){
    try{
     str = this.getString(info) ;
     if(str.matches("}")){
      // 把一个字符传变为Date类型
      temp = new SimpleDateFormat("yyyy-MM-dd").parse(str) ;
      flag = false ;
     }else{
      System.out.print("输入的不是日期,请重新输入,") ;
     }
    }catch(Exception e){
     System.out.print("输入的不是日期,请重新输入,") ;
    }
 }
 return temp ;
 }
 }
 class Operate{
 public void add(){
 System.out.println("选择的是输入操作!") ;
 }
 public void show(){
 System.out.println("选择的是查看数据操作!") ;
 }
 public void update(){
 System.out.println("选择的是修改操作!") ;
 }
 };