黑马程序员技术交流社区
标题:
请教一个For循环的题
[打印本页]
作者:
hg3093483
时间:
2013-3-26 21:06
标题:
请教一个For循环的题
本帖最后由 hg3093483 于 2013-3-26 23:07 编辑
int i = 0;
for (i++; i++ < 10; i++);
System.out.println(++i);
请详细解释一下,谢谢啦
作者:
HM周一帆
时间:
2013-3-26 21:11
答案应该是13 ,一直循环到i=10的时候,接着走循环,先i++变成11,然后i++<10不成立,此时i变成12,然后输出++i,变成13
作者:
陈圳
时间:
2013-3-26 21:19
for (i++; i++ < 10; i++,System.out.print(i+" ")); //你的for循环后面有个;号不知道是不是你故意的.
System.out.println("i="+i);//12
System.out.println(++i); //13;
//3 5 7 9 11 i=12
// 13
复制代码
看结果意会
作者:
杨天宇
时间:
2013-3-26 21:22
本帖最后由 杨天宇 于 2013-3-26 21:26 编辑
答案就是1.
int i = 0;
for (i++; i++ < 10; i++); //如果这个循环括号外的分号去掉,答案就是3,6,9
System.out.println(++i);
作者:
孙宁
时间:
2013-3-26 21:22
i=0;
i++<10; //i=1
i++; //i=2
i++<10; //i=3
i++; //i=4
……
i++<10 //i=8;
i++ ; //i=9
i++<10 //++在右边,先进行其他运算再自增,9<10成立,循环继续,i自增得10
i++; //i=11
i++<10 ; //此时i<10不成立,跳出循环,但仍自增一次,得到i=12
输出++i,打印13
作者:
杨明宁
时间:
2013-3-26 21:27
本帖最后由 杨明宁 于 2013-3-26 21:46 编辑
应该是前面i++时还是0;到i++<10还是0跟10比,因为是自增后所以到循环一次在执行前面两i++,然后i就等于2,再过来执行后面那个i++就=3了,回去又一次循环完了就=5,5再执行后面i++就=6了条件还满足,又再一次循环,完了之后就=8了,8再执行后面i++,就是9了,9再回去循环一次,i就=11了,因为是自增后所以是比较完自后再自增,所以是9<10比还满足条件,过去之后才执行前面那两自增,因为这次循环完了,自增完了之后,再执行后面那个i++,这样i就=12了,回去一比较条件不满足,跳出循环,执行输出语句,输出语句再来一次++i因为自增前所以就变成13,所以打印结果是13.
}
作者:
itserious
时间:
2013-3-26 21:28
下面每一个
i
上面的数值是它对应的变化的值:结果是13
public static void main(String[] args) {
int i = 0;
// (1,5,9,13) (2,6,10,结束) (4,8,12)
for (i++; i++ < 10; i++); //注意这里: i++ < 10; 它相当于是i<10,i++;
// (3,7,11)
System.out.println(++i);
}
作者:
邵震
时间:
2013-3-26 21:41
我知道结果是13,可是不知道楼主你要问啥?
作者:
袁梦希
时间:
2013-3-26 22:11
楼主你好 我来为你详细解答。
首先咱们看下你写的代码,你的代码for字段后面有一个“;”分号,很显然这个循环没有方法体,
那么你的代码我可以写成这样,用count变量来计算循环后的操作表达式运行了几次。
int count = 0;
int i = 0;
for (i++; i++ < 10; i++,count++);
System.out.println(++i);
System.out.println(count);
复制代码
运行的结果是 i 的值为13,count执行了5次,下面说一下执行过程
当int=1进入for循环后先执行的是初始化表达式中的i++,这时i=1。
再执行循环条件表达式,不过i=1先比较是否小于10然后再自加,结果1<10,i自加了,这时候i=2,
循环开始执行方法体中的条件了,结果发现没有方法体,然后开始执行循环后的操作表达式,也就是第二个分号后面的i++
这时候i=3,count的值为1,已经执行了1次循环了,继续从for进入,依据条件继续判断。。。。
这时候当i=11的时候走到了判断条件表达式,这时候条件不成立了,退出的时候i=11还要执行循环后的操作表达式所以说i还要自加,这时候i=12.
count的执行了5次了,至于输出结果i再次自加,所以结果为13
作者:
贾文泽
时间:
2013-3-26 23:04
循环5次, i = 11,最后判断一次, i+1 最后答案为13
作者:
余善航
时间:
2013-3-26 23:09
/*
在循环体中加入一个输出i值的语句,这样不会太乱
* for循环共执行5次
* 当第一次 i++<10 这时i=1; 走完判断条件后,i才会自增1 输出为2
* 第二次 走i++条件, 然后 i++<10;这时 i=3;走完判断条件后,i才会自增1 输出为4
* 第三次 走i++条件, 然后 i++<10;这时 i=5;走完判断条件后,i才会自增1 输出为6
* 第四次 走i++条件, 然后 i++<10;这时 i=7;走完判断条件后,i才会自增1 输出为8
* 第五次 走i++条件, 然后 i++<10;这时 i=9;走完判断条件后,i才会自增1 输出为10
* 然后走i++条件,然后i++10;这时 i=11; 走完判断条件后不符合,i才会自增1 这时i值是12
* 而循环体外输出++i; 所以输出为13
* */
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2