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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马小符 中级黑马   /  2015-3-26 21:42  /  11338 人查看  /  41 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
class forDemo01
{
  public static void main(String[] args)
   {
      for(int x=0;x<5;x++)
      {
         for(int y=x;y<5;y++)
         {
            System.out.print("*");
           }
         System.out.println();
        }
    }
}
  打印:   
         *****
         ****
         ***
         **
         *

求各位大侠赐教上面的代码是怎么一步步的循环实现的,求详细讲解!

最佳答案

查看完整内容

首先。我们来看你这个代码,有两个for循环,其中控制x的是外部循环,外部循环控制行数,控制y的是内部循环,内部循环控制列数, 因此我们看到,当x=0时,外部for循环执行,x=0是小于5的,所以为true,进入内部循环,进来内部for循环后,y=x=0,是小于5的,因此内部for循环也为true,所以执行一次内部for循环的语句 打印输出 一个 *,这里要看清楚,是System.out.print("*"); 这里的print是不回车的,然后内部循环继续进行,y++后,y= ...

41 个回复

倒序浏览
  1. public class Test {
  2.         public static void main(String[]args){
  3.          for(int x=0;x<5;x++)
  4. {
  5.          
  6.                 for(int y=x;y<5;y++)
  7. {
  8.          
  9.                    System.out.print("*");
  10.          
  11.                  }
  12.          
  13.                  System.out.println();
  14.         
  15.         }
  16.    
  17. }
  18. }
复制代码
首先。我们来看你这个代码,有两个for循环,其中控制x的是外部循环,外部循环控制行数,控制y的是内部循环,内部循环控制列数,
因此我们看到,当x=0时,外部for循环执行,x=0是小于5的,所以为true,进入内部循环,进来内部for循环后,y=x=0,是小于5的,因此内部for循环也为true,所以执行一次内部for循环的语句 打印输出 一个 *,这里要看清楚,是System.out.print("*"); 这里的print是不回车的,然后内部循环继续进行,y++后,y=1,还是小于5的,继续在第一行打印出来*.以此类推,直到y++到y=4时,一共是在第一行打印了5个*号,再y++后y=5就不满足y<5的条件了,因此内部for循环此时为false,停止输出*号,然后会执行下一个System.out.println()(注意:此行代码是回车空一格),然后执行x++,加完后x=1,而跳回到外部for循环,此时x=1时已经是到第二行了,再进行内部for循环。我说的太繁杂了。待会给楼主帖几篇我自己写的CSDN的学习笔记博客,我也是初学者。一起加油

回复 使用道具 举报
我怎么感觉你打印的写反了啊?
回复 使用道具 举报
好吧,我刚刚看错了,不好意思。我分析下试试吧,不好求见谅,仅限于交流。
      一开始进入外边的for循环,x=0,条件成立,进入循环内部
      进入内循环,将x付给y,判断条件,成立,继续执行,打印一个*,继续判断,打印*,直到打印5个*此时判断不成立,5不小于5,跳出内循环。
        执行外循环的输出结果,println 打印完需要换行,空输出不打印,直接换行。

   后边的以此类推,x增加一个,内循环中的*打印出来时就减少一个。





语言组织能力不好,求谅解,哪里没听懂,可以问我,我很有耐心的,嘿嘿
回复 使用道具 举报
楼主。这是我自己码的基础代码。供你参考一下吧,我都是看传智播客的刘易老师视频自学的。
  1. /*
  2. 13:打印如下形状。
  3.         形状1:
  4.                 *****
  5.                 *****
  6.                 *****
  7.                 *****
  8. 解题思路:设y=0,y控制的是行数,x=0,x控制列数。用for循环嵌套使用。
  9.         形状2:
  10.                 *
  11.                 **
  12.                 ***
  13.                 ****
  14.                 *****
  15. 解题思路:只要把内部循环的x<=4改成x<=y就好。
  16.   */
  17. package control;

  18. public class ForForDemo {

  19.         public static void main(String[] args) {
  20.                 // TODO Auto-generated method stub
  21. //题目一:
  22.                 for(int y=0;y<=3;y++){
  23.               for(int x=0;x<=4;x++){
  24.                       System.out.print("*");//内部循环控制输出列,即y=0,x=0,1,2,3,4时都会输出*,记住用print("*")的话不自动换行。
  25.               }
  26.               System.out.println();//内部循环结束后跳到这里输出一个回车空格即println()会自动跳到下一行。
  27.       }
  28.         System.out.println("------------------------------------------------");
  29. //题目二:
  30.         for(int y=0;y<=5;y++){
  31.             for(int x=0;x<=y;x++){
  32.                     System.out.print("*");//内部循环控制输出列,即y=0,x=0时都会输出*,记住用print("*")的话不自动换行。
  33.             }
  34.             System.out.println();//内部循环结束后跳到这里输出一个回车空格即println()会自动跳到下一行。
  35.                 }
  36.         }
  37. }
复制代码

回复 使用道具 举报
你首先要知道for循环的作用,就是输出。然后你要知道它是怎么循环的,当x=0的时候,y=0的时候打印第一个*,
一次类推,第一个x循环结束时y循环执行了5次(这是x,y都等于0),第二次x循环 y执行了4次(因为这是y的值和x相等),以此类推,54321.还有,每当x执行完一次,要换行。
回复 使用道具 举报
齐浩 中级黑马 2015-3-27 14:38:54
7#
其实你只要明白了for循环里,分号隔开的三个语句的执行顺序,就全明白了//for(int x=0;x<5;x++){ }
回复 使用道具 举报
齐浩 发表于 2015-3-27 14:38
其实你只要明白了for循环里,分号隔开的三个语句的执行顺序,就全明白了//for(int x=0;x ...

有道理,还要向你多学习啊
回复 使用道具 举报
外面的for是控制行数的,里面的for是控制列数的,也就是第一行的长度,比如x=0时,进入里面的for循环,运行5次,再返回外面的for循环,一直到外面的for循环停止为止
回复 使用道具 举报
sydie 中级黑马 2015-3-27 19:22:29
10#
为了技术分,大家也是拼了,解答如此详细。。哈哈。
回复 使用道具 举报
wyk 中级黑马 2015-3-27 21:44:27
11#
首先你的清楚外循环控制的是内循环的循环次数,内循环是用来控制每一行打印的*的个数,*呈递减的规律,所以内循环的次数应递减
回复 使用道具 举报
首先编译,JVM寻找主函数main,进入主函数,走第一个循环,执行X=0,判断x<5.正确,进入循环体,执行第二个循环,y=x,判断y<5,。正确,进入循环体,执行打印语句,然后,执行控制语句y++,判断Y<5.正确,然后继续执行打印语句,当y++到不小于5的时候,循环结束,打印换行,然后外循环执行X++,判断x<5是否正确,正确,执行循环体,y=x,y<5,执行打印,然后重复第一次的步骤,不满足条件了退出循环,执行外循环(x++),当执行到x>=5的时候,循环彻底结束,程序运行完毕
回复 使用道具 举报
本来想拿你这一个币的,看到大家回答的如此详细,我就算了
回复 使用道具 举报
谢谢各位如此认真讲解1
回复 使用道具 举报
外层for控制循环的行数。内部for控制列数
回复 使用道具 举报
外层for控制循环的行数。内部for控制列数
回复 使用道具 举报
楼主帖子怎么删除了
回复 使用道具 举报
什么时候把这一个黑马币打赏了
回复 使用道具 举报
for(int x=0,x<5;x++){//这是外层循环,每当x加一内层for循环都会循环到条件不成立为止。
      for(int y=x;y<5;y++)
         {
            System.out.print("*");//第一次进循环x等于0,y也等于0所以打印五次,第二次进入x等于1,y就等于一所以打印四次,以后依次类推,直到外层循环退出
           }
System.out.println();//这是每次打印换行
}
回复 使用道具 举报
第一个for 是打印的行数 ,第二个for是打印里面的内容,当第一行的for执行时,里面开始进行for循环输出内容,也就是4个'*',然后进行第二行的循环,依次类推.......
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马