java 2个while的执行

int i=0,j=0;
while(i<10){
while(j<10)
System.out.println(""+(i++)+""+(j++));
执行完第一次输出00之后,为什么返回i的循环,而不是先执行完j的循环再执行i循环
int i=0,j=0; while(i<10){ while(j<10) System.out.println(""+(i++)+""+(j++));
}
大括号就到这里的,我想问为什么执行第二次循环是11,而不是01

给你整理一下代码你就看出来了:

    int i=0,j=0;
    while(i<10){//外部while循环
        while(j<10)//内部while循环
            System.out.println(""+(i++)+""+(j++));//这里是i++和j++
    }

你看我代码里给你注释的部分,第一次运行完了之后,i和j的值都会被加1,这是因为i++和j++都是表示给i和j的值加1的,所以第一次循环运行完之后i和j的值都变成了1,所以第二遍内部循环的时候输出的是11,输出01是没有道理的,但是你有一点说的是对的,那就是第一次输出00之后,它是接着执行j的循环,也就是内部循环,并没有执行i循环。


有问题再追问。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-20
你说的第二次是11而不是01,是因为每执行一次System.out.println("" + (i++) + "" + (j++));语句,
变量i 和变量j 都会自增一次,按下面的方法把i++和j++分开就好了。
*****************分隔线*****************
改成这样就好了:
int i = 0;
while (i < 10) {
int j =0;
while (j < 10)
System.out.println("" + (i) + "" + (j++));
i++;
}
*****************分隔线*****************
像这种数字一定的最好不要用while,应该用for循环
for(int i =0;i<10;i++){
for(int j =0;j<10;j++)
System.out.println(i + "" + j);
}
*****************分隔线*****************
纯手打 望采纳追问

再请教下,执行第一次后输出00,i,j都自加为1和1,那第二次循环是先判断j<10,然后输出11,还是先判断i<10再判断j<10然后再输出?

追答

输出00之后,内循环没结束 会继续执行到 j<10 为false时(j==10时),才退出内循环返回外循环,而此时i==10,不满足外循环条件,外循环结束,程序终止。

本回答被提问者采纳
第2个回答  2013-12-20
第1循环的后面的{管到哪的。

第1次输出,是00
再去看第2次、第3次、…………

再看看
System.out.println(""+(i++)+""+(j++));
里面的计算
i和j都作了什么计算
相似回答
大家正在搜