本帖最后由 熊永标 于 2013-3-31 11:14 编辑
问题出现在这个类:- 62.class Computer{
- 63. private int i=1;
- 64. public void run()throws LanPingException,MaoYanException
- 65. {
- 66. if (i==1)
- 67. throw new LanPingException("电脑蓝屏了");
- 68. if(i==2)
- 69. throw new MaoYanException("电脑冒烟了");
- 70. System.out.println("电脑正常开机运行");
- 71. }
- 72. public void result()
- 73. {
- 74. System.out.println("电脑重启");
- 75.
- 76. }
- 77.}
复制代码 分析得出:
在入口函数中调用teachxue(),而这个方法调用computer的run方法,因为 i 的值始终等于1,所以始终抛出 LanPingException("电脑蓝屏了")异常,而在teacher中的teachxue()处理完异常后又递归调用此方法,而 i的值并没有任何改变,所以就一直循环下去了,循环的根本原因就是递归调用函数.i 必需在正确的时刻动态的给i赋除1和2以外的值就可以了.
代码改正如下:- 62.class Computer{
- 63. private int i=1;
- 64. public void run()throws LanPingException,MaoYanException
- 65. {
- i=new Random().nextInt(2)+1;//产生一个一到三的随机数
- 66. if (i==1)
- 67. throw new LanPingException("电脑蓝屏了");
- 68. if(i==2)
- 69. throw new MaoYanException("电脑冒烟了");
- 70. System.out.println("电脑正常开机运行");
- 71. }
- 72. public void result()
- 73. {
- 74. System.out.println("电脑重启");
- 75.
- 76. }
- 77.}
复制代码 |