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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小叔 注册黑马   /  2014-5-21 17:19  /  981 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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

2 个回复

倒序浏览
你的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参数的循环的时候都会重新初始化。注意:每次重新执行 与 一个循环里面判断条件满足接着执行循环的区别

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

回复 使用道具 举报
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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马