利用异常处理循环……

有时候在抛出一个异常时,只是希望程序重复执行某些代码,以便用户尝试二次输入……当你尝试把要执行的程序包装在一个方法里时,但出现异常时。运行你的方法。这时粗略的说是可以的……这还存在缺陷:就是当用户二次输入又出现同样的异常时,程序就会出现“异常”。也是相通的异常,只不过你没有捕捉到而已……

 看下面例子:

    import java.util.InputMismatchException;
import java.util.Scanner;
public class AA {
Scanner input=new Scanner(System.in);
  public AA() throws InputMismatchException{
System.out.println("请选择数字:/n1……/n2……/n3……");
int choice=input.nextInt();
switch(choice){
case 1:
System.out.println("1233");
break;
case 2:
System.out.println("234");
break;
case 3:
System.out.print("12455");
break;
default:
System.out.println("有误");
 
}
  }
  public static void main(String args[]){
boolean doen=false;  
while(!doen){
try{
new AA();
doen=true;  
}catch(InputMismatchException e){
System.out.println("对不起,你输入的数据有误!请核对后重新输入:");
 
}
  }
  }
}
我的解释:

   当while中条件是true时,执行new AA()
        当没有出现异常时程序执行new  AA()并且true将doen覆盖掉,此时while的条件变为false就不满足原来的条件了……
       故,也就不会再循环执行了!
        当出现异常时从new AA()中跳出,doen=true并没有执行,原来while中的条件并没有改变,仍为true,就会达到出现异常时 
       循环处理的效果了。
————————————————————————————————————————————————————————

这时朋友问我的问题,我解释过了,好像没大理解。去论坛问了下网友的思路。看看他们的思路你能不能理解:

@1@

doen=true; 是终止循环的条件
new AA();如果发生异常,则跳过doen=ture;
然后判断是否满足循环条件,!doen为true,满足循环条件,继续循环
如果new AA();不发生异常,执行doen=ture;
然后判断是否满足循环条件,!doen为false,不满足循环条件,终止循环
 
@2@
    while(!doen)当doen不等于true,明显第一次doen是等于false的,所以执行下面的new AA();
当new AA()没有出现异常时doen=true,则不满足while条件,退出循环。如果出现异常,执行System.out.println("对不起,你输入的数据有误!请核对后重新输入:"); doen还是等于false,所以继续循环。从这里看while语句是为了确保用户输入的是正确的值。
——-------------------------------------------------————————————————————————————————————---
希望看到后能吸取一下!
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值