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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 无所谓啦 高级黑马   /  2014-5-29 08:03  /  1179 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class TestWhile{
        public static void main(String[] args){
                int i = 0;
                while(i++<10);
                System.out.println("i="+i);
                }
        }       //i=11,求详细分析步骤

6 个回复

倒序浏览
运行一下  结果都出来了  还分析什么?
回复 使用道具 举报
本帖最后由 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

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

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

回复 使用道具 举报
e10my 发表于 2014-5-29 11:03
@author e10my 为您解答。-----------------低调的分割线---------------------------- 说几点注意的地方i+ ...

很详细~~·
回复 使用道具 举报
很详细,确实是这样
回复 使用道具 举报
i++是先引用后加1, 你的while语句是一个空循环体,实际执行操作就只有i++,
当你i自增到10的时候 while语句i++<10 是不成立的,所以循环结束,但是你这个写法是先判断,再+1,
所以这时候i还会自增一次, 就有i=11;

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 鼓励分!

查看全部评分

回复 使用道具 举报
先判断i是否小于10后然后再++ 应该就差不多了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马