为了账号安全,请及时绑定邮箱和手机立即绑定

高手给我讲下下面这段代码的最后的结果为什么是ABDCBDCB,我需要过程啊

高手给我讲下下面这段代码的最后的结果为什么是ABDCBDCB,我需要过程啊

守着一只汪 2023-04-20 19:15:41
public class test { static boolean foo(char c) { System.out.print(c); return true; } public static void main( String[] argv ) { int i =0; for ( foo('A'); foo('B')&&(i <2); foo('C')){ i++ ; foo('D'); } } }
查看完整描述

3 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

for执行的顺序我就不多解释了。简单的带过
进入for循环的时候首先执行的是foo('A')这里输出A
其次执行foo(‘B’)输出B返回为真,判断I是不是小于2(i=0小于2)为真
执行i++;
执行foo(‘D’);输出D;
执行foo('C');输出C
第一次循环结束,开始第二次循环
第二次循环就不再执行foo(‘A’);
冲foo(‘B’)开始,输出B返回真,判断I是不是小于2(i=1小于2)为真
执行i++;
执行foo(‘D’);输出D
执行foo(‘C’)输出C
第二次循环结束
第三次开始
执行foo(‘B’)输出B返回真判断I是不是小于2(i=2不于2)为假循环结束
所以输出为ABDCBDCB


查看完整回答
反对 回复 2023-04-23
?
Helenr

TA贡献1780条经验 获得超3个赞

循环的时候先调用foo('A')输出A 然后看条件调用foo('B')输出B 并且满足了i<2 所以执行循环体内部的 就是i++ 调用foo('D')输出D 下一步执行foo('C')输出C 因为满足循环条件,所以继续执行foo('B')&&(i=1)<2,输出B,满足条件再次进入循环i++ 调用foo('D')输出D,接着执行foo('C'),然后再判断条件foo('B')输出B&&(i=2)<2不成立 循环退出。输出结果为ABDCBDCB
for(int i=0;i<2;i++)和这个对比一下就能看出来了,就是循环顺序的问题。

查看完整回答
反对 回复 2023-04-23
?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

for ( foo('A'); foo('B')&&(i <2); foo('C')) 
在这循环中,第一个;号前面的条件始终只执行一次
所以首先打印A,然后会判断第2个条件
会打印B,并且i<2所以执行循环里面的条件
打印D,退出循环,结果打出ABD
第2次循环首先打印C
因为for循环种第2次都是先执行第2个;后条件
好比for(int i=0;i<100;i++)他第2次是从i++开始执行;
然后判断第一个;后的条件,满足条件就执行代码
所以打印BD
第3次先打印C,判断条件打印B 因为i=2所以循环退出

 


查看完整回答
反对 回复 2023-04-23
  • 3 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信