黑马程序员技术交流社区
标题:
有趣的小程序,看看大神们能不能一次看出打印结果
[打印本页]
作者:
邹学良
时间:
2013-3-8 20:39
标题:
有趣的小程序,看看大神们能不能一次看出打印结果
class Test2 {
static boolean run(char c) {
System.out.print(c);
return true;
}
public static void main( String[] args) {
int i =0;
for ( run('A'); run('B')&&(i<2); run('C')){
i++ ;
}
run('D');
}
}
复制代码
打印的是什么样的结果呢?
作者:
黑马_位志国
时间:
2013-3-8 20:45
结果是:ABCBCBC
作者:
scott0610
时间:
2013-3-8 20:57
本帖最后由 袁见 于 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
作者:
黑马李超
时间:
2013-3-8 21:00
ABCBCBCBCBCBCBC
作者:
移动小坦克
时间:
2013-3-8 21:03
打印结果是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
作者:
黑马17期-闫东东
时间:
2013-3-8 21:29
结果: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
作者:
amen0205
时间:
2013-3-9 04:18
本帖最后由 门文通 于 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 不计算后面 要搞清
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2