黑马程序员技术交流社区

标题: 循环过程? [打印本页]

作者: 赵小豪    时间: 2014-4-14 21:00
标题: 循环过程?
本帖最后由 赵小豪 于 2014-4-15 11:38 编辑

public class test4 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                for(int i = 0;i<6;i++){
                        int k = ++i;
                        while(k<5){
                                System.out.print(i);
                                k+=2;
                        }
                }
        }

}
作者: 月光海    时间: 2014-4-14 21:16
当i=0时,进入for,执行一句后,k=1,i=1,进入while循环,打印1,执行k+=2,此时,k=3,继续while循环,打印1,再执行k+=2,k=5,不符合while条件,执行i++,此时i=2,执行int k=++i;此时k=3,i=3,进入while,打印3,执行k+=2,此时k=5,不符合while条件,此时i=3,执行,i++,此时i=4,执行 int k = ++i;,此时k=5,i=5,不符合while,继续i++,i=6,退出for,因此打印结果是1  1  3
作者: 虎牛龙马    时间: 2014-4-14 21:20
月光海 发表于 2014-4-14 21:16
当i=0时,进入for,执行一句后,k=1,i=1,进入while循环,打印1,执行k+=2,此时,k=3,继续while循环,打印1 ...

完全正确啊!
作者: 你为谁归来    时间: 2014-4-14 21:33
当i=0的时候,判断i<6为真,开始for循环,k=++i(++在前面先执行i=1,k=1),进入while,判断k=1<5为真,进入while循环。输出i=1;执行k+=2;k=3;在判断k=3<5;再次输出i=1;然后继续执行k+=2,k=5,判断k=5<为假,结束while循环,执行i++,i=2,判断i=2<6为真,执行for循环,k=++i,k=3(因为k定义在for循环语句第一位,for的每次循环都会将k重新赋值),进如while循环,判断k=3<5,为真,输出i=3,执行k+=2,k=5,不满足while条件,跳出循环,执行i++,i=4,判断i<6;执行k=++i,k=5,不满足while循环,执行i++......然后K就一直不满足while的循环条件,i就无法再次输出,直到i<6为假,程序结束。
所以最后输出的结果是:113
作者: Linuxgg    时间: 2014-4-14 23:54
i++, 先用i,后加1
++i,先加1,后用i




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