A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

刘宇琦

注册黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 刘宇琦 注册黑马   /  2012-7-4 22:22  /  1671 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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-5 08:28

8 个回复

倒序浏览
本帖最后由 王健 于 2012-7-4 22:57 编辑

程序有问题?
回复 使用道具 举报
????汗,输出什么,你自己运行一下不就知道了么?
要是问为什么会有那种输出结果,倒还算是一个合格的问题。
回复 使用道具 举报
周刚 发表于 2012-7-4 22:30
????汗,输出什么,你自己运行一下不就知道了么?
要是问为什么会有那种输出结果,倒还算是一个合格的问题 ...

我觉得是楼主不明白执行的流程吧
回复 使用道具 举报
首先没有输出,
output ="13423"
回复 使用道具 举报
楼主!输出语句你都不加?好吧,我替你加上吧,如果你把输出语句加到 output+="4"; 这句话后面,那么打印出来的只有foo(0);的结果134;
如果你把输出语句加到 finally{ output+="3"; sop(output)} ,这个结果是: foo(0);输出结果:13;foo(1); 输出结果为:13423;
看到结果其实就可以看到了语句的执行流程。
回复 使用道具 举报
吴立杰 发表于 2012-7-4 22:49
楼主!输出语句你都不加?好吧,我替你加上吧,如果你把输出语句加到 output+="4"; 这句话后面,那么打印出 ...

:lol小杰
回复 使用道具 举报
把打印语句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  参考下图

评分

参与人数 1技术分 +1 收起 理由
刘笑 + 1 赞一个!

查看全部评分

回复 使用道具 举报
yufeiant 发表于 2012-7-4 23:11
小杰

:lol肥鱼
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马