黑马程序员技术交流社区

标题: 敲了五行代码不懂什么意思,求解。、/已解决,谢谢各位.. [打印本页]

作者: 小夏    时间: 2014-6-20 00:27
标题: 敲了五行代码不懂什么意思,求解。、/已解决,谢谢各位..
本帖最后由 小夏 于 2014-6-20 01:19 编辑

java基础视频第三天,for嵌套循环的练习打印倒三角。
我的问题是:我认为下边的代码打印出来的应该是倒三角,结果却只执行了1次内循环打印了第一行,很是疑惑,哪位同学能告诉我这是为什么吗:o

打印结果:





作者: 杨桦    时间: 2014-6-20 00:32
楼主这不是嵌套循环吗
作者: 小夏    时间: 2014-6-20 00:35
杨桦 发表于 2014-6-20 00:32
楼主这不是嵌套循环吗

是啊,我想换个想法实现打印倒三角,结果内循环只循环了1次,不知道为什么。
作者: tiuwing    时间: 2014-6-20 00:36
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                
  6.                 for(int x=0;x<5;x++)
  7.                 {
  8.                         for(int y=x;y<5;y++)
  9.                         {
  10.                                 System.out.print("*");
  11.                         }
  12.                         System.out.println();
  13.                 }
  14.         }
  15. }
复制代码


你那程序跑完一圈,y都已经=5了,后面那些都不会再进y的那个循环啦!
作者: 小夏    时间: 2014-6-20 00:40
tiuwing 发表于 2014-6-20 00:36
你那程序跑完一圈,y都已经=5了,后面那些都不会再进y的那个循环啦!

明白了:victory:明白了:victory: 万分感谢:hug:
作者: 黎志勇    时间: 2014-6-20 00:41
本帖最后由 黎志勇 于 2014-6-20 00:50 编辑

int y=0;
for (int x=0;x<5 ;x++,y++ ) {
    for (;y<5 ;y++ ) {
        System.out.println("*");
        //注释1:这个位置,当这个里面的for完整运行一轮循环后,y的值会变成5,之后看下面的注释2
    }
    System.out.println();
    //注释2:当完成x=0时的那次循环后,因为x++,y++得缘故,x变为1,而y变为6,这时在进入里面的for循环时,y<5的结果是flase,所以不执行内
   //循环的内容,直接结束内循环,所以后面的几行只能打印换行

}

作者: 小夏    时间: 2014-6-20 00:48
黎志勇 发表于 2014-6-20 00:41
int y=0;
for (int x=0;x

注释写的真清楚,一看就明白了。万分感谢:handshake
作者: 唐杰亮    时间: 2014-6-20 00:52
本帖最后由 唐杰亮 于 2014-6-20 01:51 编辑

tiuwing说的没错,要注意y值的变化,当跑一遍后,y值已经变成5了,跑第二遍外部循环的时候,y值等于5,不小于5,所以内部已经不循环了。我的代码是这样的:
  1. int z=0;
  2. for(int x=0;x<5;x++,z++){
  3.     for(int y=0;y<5-z;y++){
  4.         System.out.print("*");
  5.    
  6.     }
  7.   System.out.println();
  8. }
复制代码


作者: Geek_001    时间: 2014-6-20 01:06
你内循环忘记写初始化表达式了,加上for(int y=x ; y<5 ; y++)
作者: 小夏    时间: 2014-6-20 01:11
唐杰亮 发表于 2014-6-20 00:52
tiuwing说的没错,要注意y值的变化,当跑一遍后,y值已经变成5了,跑第二遍外部循环的时候,y值等于5,不小 ...

对,我想错了,当时认为内循环的y循环后的结果和外循环是没关系的.....现在明白了。
作者: 小夏    时间: 2014-6-20 01:12
Geek_001 发表于 2014-6-20 01:06
你内循环忘记写初始化表达式了,加上for(int y=x ; y

对,老师是这样教的。不过我想换一种表达方式所以就尝试了下
作者: 霜林醉zhx    时间: 2014-6-20 10:10
好吧,都有人说了
作者: Rodgers    时间: 2014-6-20 14:24
楼主,要加油啊!!!!!!!
作者: on-on    时间: 2014-6-20 17:39
楼主加油




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