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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小夏 于 2014-6-20 01:19 编辑

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

打印结果:




评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1 神马都是浮云

查看全部评分

13 个回复

倒序浏览
楼主这不是嵌套循环吗
回复 使用道具 举报
杨桦 发表于 2014-6-20 00:32
楼主这不是嵌套循环吗

是啊,我想换个想法实现打印倒三角,结果内循环只循环了1次,不知道为什么。
回复 使用道具 举报
  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的那个循环啦!

评分

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

查看全部评分

回复 使用道具 举报
tiuwing 发表于 2014-6-20 00:36
你那程序跑完一圈,y都已经=5了,后面那些都不会再进y的那个循环啦!

明白了:victory:明白了:victory: 万分感谢:hug:
回复 使用道具 举报
本帖最后由 黎志勇 于 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,所以不执行内
   //循环的内容,直接结束内循环,所以后面的几行只能打印换行

}

评分

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

查看全部评分

回复 使用道具 举报
小夏 初级黑马 2014-6-20 00:48:46
7#
黎志勇 发表于 2014-6-20 00:41
int y=0;
for (int x=0;x

注释写的真清楚,一看就明白了。万分感谢:handshake
回复 使用道具 举报
本帖最后由 唐杰亮 于 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. }
复制代码

评分

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

查看全部评分

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

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

对,老师是这样教的。不过我想换一种表达方式所以就尝试了下
回复 使用道具 举报
好吧,都有人说了
回复 使用道具 举报
楼主,要加油啊!!!!!!!
回复 使用道具 举报
on-on 中级黑马 2014-6-20 17:39:44
14#
楼主加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马