为了账号安全,请及时绑定邮箱和手机立即绑定

TryCatch语句中两个类似方法名出现不同的结果......?

TryCatch语句中两个类似方法名出现不同的结果......?

慕的地0971735 2016-05-14 23:02:24
public int test3(){ int divider=10; int result=100; try{ while(divider>-1){ divider--; result=result+100/divider; } } catch(Exception e){ e.printStackTrace(); System.out.println("程序抛出异常啦!!!"); } finally{ System.out.println("这是finally!!哈哈!!");System.out.println("我是result!我的值是:"+result);    这一句输出是    我是result!我的值是:381; } System.out.println("我是test3()我运行完了!表想我。。"); return 1111;}}public int test2(){ int divider=10; int result=100; try{ while(divider>-1){ divider--; result=result+ 100/divider; } return result; } catch(Exception e){ e.printStackTrace(); System.out.println("程序抛出异常了!!"); return result=999; } finally{ System.out.println("这是finally!!哈哈!!"); System.out.println("我是result!我的值是:"+result);    这一句的输出是999,怎么回事??? }
查看完整描述

1 回答

已采纳
?
一切都是算计

TA贡献16条经验 获得超10个赞

程序出现异常了  , 因为 执行了divider--   ,所以divider每次递减1 ;当divider=0时,result=result+ 100/divider中的100/divider就是100/0,0不能作为除数,所以会产生一个除数为0的异常,catch捕获了这一异常,执行return result=999;将result赋值为999,所以最后输出999

查看完整回答
反对 回复 2016-05-14
  • 慕的地0971735
    慕的地0971735
    那为什么在 public int test3()中有输出是 我是result!我的值是381 呢?
  • 一切都是算计
    一切都是算计
    因为你前面catch语句没有执行为result赋值 ,所以当divider=0时,程序捕获异常就把 result的当前值输出了。 你看你的while循环 while(divider>-1){ divider--; result=result+100/divider; } 执行result=result + 100/divider,divider从10一直到1,每次都赋值给了result,最后divider=1时,result=281+100/1 ;所以result=381
  • 1 回答
  • 0 关注
  • 1316 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信