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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求大侠:在屏幕上打印出n行的金字塔图案,如,若n=5,则图案如下:

*

***

*****

*******

*********
如下是我自己运行通过的一个 代码如下;
public class PrintStar{

public static void main(String args[]){

int col = Integer.parseInt(args[0]);

for(int i=1;i<=col;i++){//i表示行数

//打印空格

for(int k=0;k<col-i;k++){

System.out.print(” “);

}

//打印

for(int m=0;m<2*i-1;m++){

System.out.print(“*”);

}

System.out.println();

}

}
细心的人可以看出来,这种方法复用性不强,我想用构造一个函数实现,求大侠指教,能不能给出可以运行的代码,多谢!

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 赞一个!

查看全部评分

6 个回复

正序浏览
学习了!
回复 使用道具 举报
内部是两个循环。
第一个用于打空格。
第二个用于打n
回复 使用道具 举报
/*
     *
    * * *
  * * * * *
* * * * * * *
分析
首先知道下面图形怎样得到
*
* * *
* * * * *
* * * * * * *
行。。。列
双层循环   外层控制行   里层控制列
0---1
1---3
2---5
3---7
2*line+(-)1
for(int i=0;i<4;i++){
for(int j=0;j<2*i+1;j++){
  System.out.print("* ");
}
System.out.println();
}


将基本图形在前面补空格就得到下面图形
------*     1 1
----* * *   2 3
--* * * * * 3 5
* * * * * * *4 7

*/
class  Test3
{
public static void main(String[] args)
{
  for(int i=0;i<4;i++){
   //控制星星前面的空格
   for(int k=3;k>i;k--){
    System.out.print("  ");
   }
   
   //控制列  打印星星的个数
   for(int j=0;j<2*i+1;j++){
    System.out.print("* ");
   }
   System.out.println();
  }
}
}
个人感觉打印图形问题:可以先想到一般图形,然后用在打印空格,注意行和列的关系。
回复 使用道具 举报
本帖最后由 黑马_位志国 于 2013-3-5 15:49 编辑

public class Test{
   
    public static void main(String[] args){
     printStar(10);
    }
   
    public static void printStar(int num){
     for(int i = 0; i < num; i++)
     {
      for(int j = 0; j <= i; j++)
      {
       if(i % 2 != 0)
        continue;
       System.out.print("*");
      }
      System.out.println();
     }
    }
}
不是规律的规律:
尖朝上,可以改变条件,让条件随着外循环变化;
尖朝下,可以初始化值,让初始化值随着外循环变化.
回复 使用道具 举报
  1. public class Demo02 {
  2.         /*
  3.     *
  4.    ***
  5.   *****
  6. *******
  7. *********

  8.          */

  9.         public static void main(String[] args) {
  10.                 new Demo02().print(5);
  11.         }

  12.         public void print(int col) {
  13.                 for (int i = 1; i <= col; i++) {
  14.                        
  15.                         //打印空格
  16.                         for(int k=col-1;k>=i;k--){
  17.                                 System.out.print(" ");
  18.                         }
  19.                        
  20.                         for(int j = 1;j<=i*2-1;j++){
  21.                                 System.out.print("*");
  22.                         }
  23.                         System.out.println();
  24.                 }
  25.         }
  26. }
复制代码
这样行吗

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
package Day23;
class Test2
{
        public static void main(String[] args)
        {
                getNum(5);
        }
        public static void getNum(int n)
        {
                for(int i=1;i<=n*2;i++)
                {
                        if(i%2!=0)
                                for(int j=0;j<i;j++)
                                        System.out.print("*");
                        System.out.println();
                }
        }
}
是这样么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马