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("选择的是修改操作!") ;
}
};