黑马程序员技术交流社区

标题: 是循环那错了么 [打印本页]

作者: 小叔    时间: 2014-5-21 17:19
标题: 是循环那错了么
  1. public class shu {
  2.         public static void main(String[] args){
  3.                 int x=0 ,y=0,z=1;
  4.                 for(;x<10;x++){
  5.                         for(;y<10;y++){
  6.                                 for(;z<10;z++){
  7.                                         int xx =x*100+y*10+z;
  8.                                                 System.out.println(xx);
  9.                                 }
  10.                         }
  11.                 }
  12.         }
  13. }
复制代码

不是应该循环1000次么为啥结果只有10
作者: 海世山盟    时间: 2014-5-21 18:04
你的x,y,z定义在main里面但是是在for循环外。因此当你循环到 x=0,y=0,z=10后接下来执行 x=0,y=1,z<10(为假  这里的z之所以是10而不是0 就是因为参数z的循环已经改变了z的值了,你的for循环里确没有再次初始化z,)因此答案是你上边提到的。
如果 for(int x=0;x<10;x++)
{
for(int y=0;y<10;y++)
{
System.out.out.println(10*x+y);
}
}
当执行完x=0,y=10时  y参数的循环不满足条件 循环跳回到x参数的循环,此时从x=1开始,然后判断条件x<10 满足就执行循环体(也就是y参数的循环)注意,因为y的初始化是定义在了for循环上,因此每次重新执行y参数的循环的时候都会重新初始化。注意:每次重新执行 与 一个循环里面判断条件满足接着执行循环的区别
作者: Sevenette    时间: 2014-5-21 18:52
x y z的初始化没有定义在for循环里面, 所以里面的y z的for循环均只循环一圈。 在下面写了注解不知道能不能看懂0.0
把x y z 的赋值语句放到for循环的第一个条件上就能解决了~


  1. public class shu {
  2.     public static void main(String[] args){
  3.             int x=0 ,y=0,z=1;
  4.             for(;x<10;x++){
  5.                     for(;y<10;y++){//2. y=1 进入z的for循环
  6.                             for(;z<10;z++){//1.输出0到9十个数。循环到z==10后,不满足,跳出循环。
  7.                                                             //3.z依旧==10,不满足,跳出循环…… 这样重复到x,y都循环结束。
  8.                                     int xx =x*100+y*10+z;
  9.                                             System.out.println(xx);
  10.                             }
  11.                     }
  12.             }
  13.     }
  14. }
复制代码





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