若x=0,输出如下图形
    *
   **
  ***
 ****
*****
   若x=1,输出如下图形
*****
 ****
  ***
   **
    * 
   若x=2,输出如下图形
   *
   **
   ***
   ****
   *****
   若x=3,输出如下图形
   *****
   ****
   ***
   **
   *
   若x=4,输出如下图形
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *
( x的值在程序中给 )我想的方法很笨,就是用循环控制输出“*”和“ ”的方法。
谁能给个简单一点的或者好点的算法么??
谢谢了~!

解决方案 »

  1.   

    给你个思路吧 写4个方法.分别判断x=0,1,2,3的时候.当x=4的时候,执行当x=0,1时候的方法.
      

  2.   

    也没有相处什么特别好的办法,下面这个函数你可以看看
    public void testPring(int num) {
    int semiLength = 5;
    int starNum = num % 2 == 0 ? 1 : semiLength;
    int spaceNum = semiLength - starNum;
    int increase = num % 2 == 0 ? 1 : -1;
    int loopNum = num / 2 < 2 ? 1 : 2;
    int step = loopNum;
    int loopSteps = semiLength * loopNum - loopNum / 2; for (int i = 0; i < loopSteps; i++) {
    for (int j = 0; j < spaceNum; j++)
    System.out.print(" ");
    for (int j = 0; j < starNum; j++)
    System.out.print("*");
    System.out.println();

    if(i == semiLength-1)
    increase *= -1;

    spaceNum -= increase;
    starNum += increase*step;
    }
    }
      

  3.   

    xuebinghanying(血冰寒影)
    ========================
    除了这种还有什么,呵呵,lz的算法挺好的啊,总比用System.out.print("*")直接打印好,呵呵
      

  4.   

    swich(i)
     case 1:
      ....
     case 2:
      ...  ....  没别的办法了 没规律的!~
      

  5.   

    大家还是先想想帮法,靠if和case是写不出程序的!
    也不要把注意力太多的放在是用System.out.println(),还是别的输出上,毕竟这个不重要的。整体的思想才识关键。
      

  6.   

    testPring(int num) 这个算法不具有扩充性,但是对于你楼主给的五中情况是完全没有问题的。传入一个类型就可以得到相应的图形。
    但是不明白楼主想要简单的意思是什么?
    底层程序必须自己控制每个显示内容的,包括图象界面也是这样(只是有优秀的程序员帮你完成了),要显示一个字就的控制它每个点的显示。
    可能在显示方面唯一可以做区别的是用图形显示,还是图象显示。你这个题目类似于图形,所以还是老老实实的控制输出。至于算法无非是给出一个输入之后能很好的显示结果。不至于写太多的if case之类的。
      

  7.   

    数字和图像之间好像没什么规律,只有ifelse了
      

  8.   

    就此题而言,lz的给的条件似乎没有规律

    swich(i)
    {
    case0:
    case1:
    case2:
    case3:
    case4:
    }
    或者
    if()
    {}
    else
    {}