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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Test2 {

  2. static boolean run(char c) {

  3. System.out.print(c);
  4. return true;
  5. }

  6. public static void main( String[] args) {

  7. int i =0;
  8. for ( run('A'); run('B')&&(i<2); run('C')){
  9. i++ ;
  10. }
  11. run('D');
  12. }
  13. }
复制代码
打印的是什么样的结果呢?

6 个回复

倒序浏览
结果是:ABCBCBC
回复 使用道具 举报
本帖最后由 袁见 于 2013-3-8 21:04 编辑

打印的结果是:ABCBCBD
解释:开始执行main方法中的for循环,首先执行for循环的第一个条件,run('A'),此时打印出A ,接下来执行run('B') && (i < 2),打印出B,接下来执行循环体,执行完循环体后,执行for循环的run('C'),此时打印C,接下来在执行run('B') && (i < 2),打印出B,接下来执行循环体,执行完循环体后,执行for循环的run('C'),此时打印C。接下来执行run('B') && (i < 2),首先执行run('B') ,打印出B,再执行 (i < 2),此时发现条件不成了,跳出for循环,执行run('D')。所以最后打印的是:ABCBCBD
回复 使用道具 举报
ABCBCBCBCBCBCBC
回复 使用道具 举报
打印结果是ABCBCBD
为了技术分还要说明一下( 尽管你可能知道) 。。。。
for ( run('A'); run('B')&&(i<2); run('C')){
i++ ;
}
这段代码中先走run("A'),然后走run('B')&&(i<2),
然后i++,然后run('C'),这时候i=1;   此时打印是ABC
第2遍的时候就不走run('A')了,
而是走run('B')&&(i<2),先执行run('B'),然后判断因为,i<2,
所以可以执行i++,这时i=2,然后执行run('c'),此时是ABCBC
然后再走run('B'),走完run('B'),判断i是否小于2,
因为i=2,所以不小于2,所以此循环结束,此时是ABCBCB
最后打印最后一行的run('D'),所以最后结果是
ABCBCBD

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
结果:ABCBCBD
分析:
for ( run('A'); run('B')&&(i<2); run('C'))  
1.首先执行 run('A'); 打印字符A,
2.执行run('B') 打印B 返回true,i=0 满足,i++ i=1;
在 执行run('C')  打印C
3.又执行run('B')&&(i<2) 打印B i=1 满足,i++;  i=2;
4,执行run('C')打印C
5,又执行run('B') 打印B, i=2不满足 i<2;循环停止。
6,执行到run('D'); 打印D

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 门文通 于 2013-3-9 04:20 编辑

ABCBCBD   
1  打印A  B  
2  i<2  i++  打印CB
3  i<2  i++  打印CB
4  i=2  跳出循环  打印D

认为ABCBCBCB...  的同学  误认为 &&  只要判断 前面为true  就不会计算后面了  这是误区

&&  前面为false  不计算后面   ||  前面为true  不计算后面  要搞清
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马