黑马程序员技术交流社区

标题: 控制结构实验—打印图案 [打印本页]

作者: 菠萝包丶    时间: 2014-4-17 22:04
标题: 控制结构实验—打印图案
本帖最后由 菠萝包丶 于 2014-4-17 22:46 编辑

编写Java程序,利用控制语句打印一下图案:
   *
  ***
*****
*******可能显示位置不对,看图片
纠结了好久。,求大神指导下思路以及代码,主要是思路,谢谢啦!



QQ图片20140417220638.jpg (12.54 KB, 下载次数: 17)

QQ图片20140417220638.jpg

作者: anqi    时间: 2014-4-17 22:07
本帖最后由 anqi 于 2014-4-17 22:38 编辑

1  *  1                3空格1个星
2  *** 3              2空格3个星
3***** 5            1空格5个星                                                                                                                                                      4******* 7          无空格7个星这种图形之间联想到毕老师的大圈套小圈。双重for循环。、只有前面的空出来的就是打印空格。
  1. public class Test{
  2.         public static void main(String[] args) {
  3.                 for(int x=1;x<=4;x++) //4层,循环4次
  4.                 {
  5.                         for(int y=x-1;y<=4;y++)//控制空格打印
  6.                         {
  7.                                 System.out.print(" ");
  8.                         }
  9.                         for(int z=1;z<=2*x-1;z++)//控制*的打印,
  10.                         {
  11.                                 System.out.print("*");
  12.                         }
  13.                         System.out.println();//每打完一行都要换行
  14.                 }
  15.         }
  16. }
复制代码
我真晕了回帖的排版怎么这么难  自动换行的




作者: ⒈心只霸占沵    时间: 2014-4-17 22:16
本帖最后由 ⒈心只霸占沵 于 2014-4-17 22:19 编辑
  1.   public static void main(String[] args) {
  2.          //首先该考虑是的有多少行
  3.          //然后考虑每行上的左边的空格   
  4.          //再考虑*
  5.          for(int i=0;i<9;i++){
  6.                  for(int j=0;j<9-i;j++){//空格应该是从多到少 所以说j的范围应该是从大到小
  7.                          System.out.print(" ");
  8.                  }
  9.                  for(int k=0;k<i;k++){//*应该是从少到多,所以k的范围应该是从小到大
  10.                          System.out.print(" *");
  11.                  }
  12.                  System.out.println();
  13.          }
  14. }
复制代码

作者: 你为谁归来    时间: 2014-4-17 22:22
  1. public class Demo3
  2. {

  3.         public static void main(String[] args)
  4.         {
  5.                 for(int a=1;a<=4;a++)  //用来判断层数
  6.                 {
  7.                         for(int b=a;b<=4-1;b++)//用来判断输出空格个数。
  8.                         {
  9.                                 System.out.print(" ");
  10.                         }
  11.                         for(int c=1;c<=2*a-1;c++)//用于判断输出*的个数
  12.                         {
  13.                                 System.out.print("*");
  14.                         }
  15.                         System.out.println();//换行的作用
  16.                                        
  17.                 }
  18.        

  19.         }

  20. }
复制代码

作者: 四川男人    时间: 2014-4-17 22:26
看看你的第三排,明显*已经顶格了。说明你打印空格的循环次数不够,代码我写了下:
for(int x=0;x<4;x++)
                {
                        for(int y=3;y>x;y--)
                        {
                                System.out.print(" ");
                        }
                        for(int z=0;z<=x;z++)
                        {
                                System.out.print("* ");
                        }
                        System.out.println();
                }
作者: 菠萝包丶    时间: 2014-4-17 22:26
你为谁归来 发表于 2014-4-17 22:22

外循环的for语句是控制打印的行数,内函数的两个for语句思路是不是将图形,分为一个空格的倒三角以及一个星星的正三角来打印?
作者: 你为谁归来    时间: 2014-4-17 22:31
是一个空格的倒直角三角形,和正的*组成的等边三角形,不是正三角形。你要是需要正三角的看2楼的答案,那个是正三角形的打印方法。
作者: 菠萝包丶    时间: 2014-4-17 22:34
⒈心只霸占沵 发表于 2014-4-17 22:16

这个好像不是输出的图案
作者: 菠萝包丶    时间: 2014-4-17 22:36
你为谁归来 发表于 2014-4-17 22:31
是一个空格的倒直角三角形,和正的*组成的等边三角形,不是正三角形。你要是需要正三角的看2楼的答案,那个 ...

嗯。,表达错了,那应该就是这样的思路了
先外循环打印控制行数,再控制正的空格倒三角形,最后是*组成的正立的三角形,谢谢啦:lol




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