黑马程序员技术交流社区

标题: 一个输出问题,求解 [打印本页]

作者: 刘宇琦    时间: 2012-7-4 22:22
标题: 一个输出问题,求解
public class Love{
public static String output="";
public static void foo(int i){
   try {
        if(i==1){
                    throw new Exception();
               }
         output +="1";
       }
     catch(Exception e){
                     output+="2";
                     return;
                      }
     finally{
                output+="3";
           }
      output+="4";
}
public static void main(String args[]){
              foo(0);
              foo(1);
   
   }
}
输出什么?

作者: 王健    时间: 2012-7-4 22:25
本帖最后由 王健 于 2012-7-4 22:57 编辑

程序有问题?
作者: 周刚    时间: 2012-7-4 22:30
????汗,输出什么,你自己运行一下不就知道了么?
要是问为什么会有那种输出结果,倒还算是一个合格的问题。
作者: 王健    时间: 2012-7-4 22:32
周刚 发表于 2012-7-4 22:30
????汗,输出什么,你自己运行一下不就知道了么?
要是问为什么会有那种输出结果,倒还算是一个合格的问题 ...

我觉得是楼主不明白执行的流程吧
作者: 付蛟龙    时间: 2012-7-4 22:48
首先没有输出,
output ="13423"

作者: 吴立杰    时间: 2012-7-4 22:49
楼主!输出语句你都不加?好吧,我替你加上吧,如果你把输出语句加到 output+="4"; 这句话后面,那么打印出来的只有foo(0);的结果134;
如果你把输出语句加到 finally{ output+="3"; sop(output)} ,这个结果是: foo(0);输出结果:13;foo(1); 输出结果为:13423;
看到结果其实就可以看到了语句的执行流程。
作者: 贾飞雨    时间: 2012-7-4 23:11
吴立杰 发表于 2012-7-4 22:49
楼主!输出语句你都不加?好吧,我替你加上吧,如果你把输出语句加到 output+="4"; 这句话后面,那么打印出 ...

:lol小杰
作者: 赵庆礼    时间: 2012-7-4 23:42
把打印语句System.out.println(output);放在main函数最后,打印的结果是13423,foo(0);foo(1);先执行foo(0)中的try语句中的output +="1"; 再执行finally中的output+="3"; 最后执行output+="4";这时output+="134";然后接着执行foo(1)中的try,因为实参为1,所以执行if语句,抛出异常,然后执行异常语句,output+="2";因为output为static类型,所以output="1342";  接着执行finally语句output+="3";因为 finally语句必须执行,执行完这两个函数以后,output的值为13423  参考下图

作者: 吴立杰    时间: 2012-7-5 06:28
yufeiant 发表于 2012-7-4 23:11
小杰

:lol肥鱼




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2