黑马程序员技术交流社区

标题: for嵌套的问题 [打印本页]

作者: 刘家斌    时间: 2014-10-12 15:45
标题: for嵌套的问题
  1. class ForTu
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for(int x=0;x<5;x++)
  6.                 {
  7.                         for(int y=x;y<5;y++)//改变初始值表达式,尖向下,改变条件表达式,尖向上
  8.                         {
  9.                                 System.out.print('*');
  10.                         }
  11.                         System.out.println();
  12.                 }       
  13.         }
  14. }
复制代码
怎么利用for嵌套打印出的形状呢?条件是怎么控制的啊
作者: SelonLiao    时间: 2014-10-12 16:34
同学,建议使用调试工具去跟踪变量的变化和执行过程,那么你就能明白怎么改变形状了解决办法:
将外层循环的  初始值改成 4 ,将条件改成 x >=0  ,再将第三个表达示改成 递减,那就可以将倒三角变成正三角了
  1. public static void main(String[] args)
  2.      {
  3.              for(int x=4;x>=0;x--)
  4.              {
  5.                      for(int y=x;y<5;y++
  6.                      {
  7.                              System.out.print('*');
  8.                      }
  9.                      System.out.println();
  10.              }        
  11.      }
复制代码





作者: 刘家斌    时间: 2014-10-12 17:14
嗯嗯,搞懂了
作者: 英雄传说ER    时间: 2014-10-12 17:19
for嵌套 外循环控制的是你要打多少行 内循环控制的是你每一行要打什么
例如 for(int y= 0 ;y<5;x++) {System.out.print("*");}这句话意思是一行要打五颗星 对吧
然后你说要打10行  意思就是这段代码执行10遍 然后for(int x=0;x<10;x++ ){上面的话作为此处代码块,意思是此处打印五颗星,此代码块一共执行了10次}
这个明白了没?————明白了,我们进行下一步就简单多了,你要抓住嵌套循环的实质“既然外循环控制行数,内循环控制列数”
那么“改变内循环初始值表达式”实质是改变什么? 改变的是不是这一列的初始值,就是这一列从第几个开始打印?
“改变条件表达式”是不是这一列打印的个数,就是这一列打印几个?

作者: Quasimodo    时间: 2014-10-12 17:29
假设我们打印的是*组成的图案
首先你要知道,外部循环是控制行,内部循环是控制列。  所以你先看你要打印多少行,就可以先把外部循环的参数确定好了。我们可以先称外循环叫for1      
然后到内循环。如果要打印尖头朝下的三角形,那就是要打印的 * 的个数是递减的;如果要打印尖头朝上的,那打印的 * 的个数递增的。这样内循环的参数也就可以确定的了,我们先把打印 * 的循环叫for2.
还有就是如果你的三角形是右对齐,那在for2打印的时候,都要在前面打印个空格,这时就要在for2前面再加个循环for3来打印空格。for3的参数是要看你打印多少个空格来设定的。也就是一个外循环,里面嵌套两个内循环。 当然如果三角是左对齐的话就不用考虑在前面打印空格了
利用for嵌套还能打印其他的图案,大多也可以参考上面的方式

作者: zz_job    时间: 2014-10-12 17:59
简单一句话,外循环控制行,内循环控制列 .  两个基本的for打印矩形,内小于外,打印正三角,其它的就是在此基础上深演化的.




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