黑马程序员技术交流社区

标题: 关于While的题目,求解答。谢谢! [打印本页]

作者: 无所谓啦    时间: 2014-5-29 08:03
标题: 关于While的题目,求解答。谢谢!
public class TestWhile{
        public static void main(String[] args){
                int i = 0;
                while(i++<10);
                System.out.println("i="+i);
                }
        }       //i=11,求详细分析步骤
作者: 周俊波    时间: 2014-5-29 10:47
运行一下  结果都出来了  还分析什么?
作者: e10my    时间: 2014-5-29 11:03
本帖最后由 e10my 于 2014-5-29 11:05 编辑

@author e10my 为您解答。
-----------------低调的分割线----------------------------
说几点注意的地方
i++ 是先使用i的值 ,之后i 再自增。
所以,第一次循环,判断的时候(i = 0< 10  ;判断完之后 i++  ,i 的值成了1。
                int i = 0;
                while(i++<10);
//看这句话,while 后面有个分号 while循环内是空语句,效果只有 i++
//就是说执行到最后一次的时候i的值为10 , “<10”不成立 结束空的while循环
//但是 i++ 是后执行的, 所以 i = 11
                System.out.println(i);
最后打印出11

希望对楼主有帮助,共勉。

作者: code2014    时间: 2014-5-29 11:22
e10my 发表于 2014-5-29 11:03
@author e10my 为您解答。-----------------低调的分割线---------------------------- 说几点注意的地方i+ ...

很详细~~·
作者: pengyu    时间: 2014-5-29 11:41
很详细,确实是这样
作者: 倪大大    时间: 2014-5-29 12:03
i++是先引用后加1, 你的while语句是一个空循环体,实际执行操作就只有i++,
当你i自增到10的时候 while语句i++<10 是不成立的,所以循环结束,但是你这个写法是先判断,再+1,
所以这时候i还会自增一次, 就有i=11;
作者: Blackay    时间: 2014-5-29 12:12
先判断i是否小于10后然后再++ 应该就差不多了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2