*
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *
      

解决方案 »

  1.   


    public class OutputRhombus {
        public static void main(String[] args) {
    int i, j, n = 9;
    if (0 == n % 2)// 只能为奇数
        n = n - 1;
    for (i = 1; i <= n / 2 + 1; i++) {// 前半部分的每一行
        for (j = 0; j <= n / 2 - i; j++)
    // 离边框距离
    System.out.print(" ");
        for (j = 1; j <= i * 2 - 1; j++)
    // 每行打印几个*
    System.out.print("*");
        System.out.println();// 每行打印完成,就回车换行
    }
    for (i = 0; i < n / 2; i++) {
        for (j = 0; j <= i; j++)
    System.out.print(" ");
        for (j = 0; j < n - 2 * (i + 1); j++)
    System.out.print("*");
        System.out.println();
    }    }
    }
    /*output:
        *
       ***
      *****
     *******
    *********
     *******
      *****
       ***
        * */
      

  2.   

    我们公司的面试题目,两个循环实现,据说还不是最好的,说是可以一个循环实现?!有研究的大侠可以跟帖。 int startCount = 1;//第一行星号个数
    int lineStep = 2;//每行星号步进数
    int maxCount = 9;//中段星号最大值

    int a = startCount - lineStep;

    for (int i = maxCount / 2 * -1; i <= maxCount / 2; i++) {
    if (i <= 0) {
    a += lineStep;
    } else {
    a -= lineStep;
    } int m = Math.abs(i) + a;
    for (int k = 1; k <= m; k++) {
    if (k <= Math.abs(i)) {
    System.out.print(" ");
    } else {
    System.out.print("*");
    }
    }
    System.out.println();
    }