空格中的错误printHourglass

时间:2014-08-29 10:26:29

标签: java loops recursion

public static void printHourglass(int size , char symbol) {
    printHourglass(size, 0, symbol);
}

public static void printHourglass(int size, int s, char symbol) {
    stars(size, s,symbol);
    if (size > 2) {
        printHourglass(size - 2, s + 1, symbol);
        stars(size, s,symbol);
    }
}

public static void stars(int n, int s, char symbol) {
    if (s > 0) {
        System.out.print(" ");
        stars(n, s - 1 , symbol);
    } else if (n > 0) {
        System.out.print(symbol);
        stars(n - 1 , s, symbol);
    } else {
        System.out.println();
    }
}

我的代码有点好,但我希望它的结果像这样

鉴于沙漏的大小为5. printHourglass()的预期输出: 黑色标记是空格,我希望我的代码打印下面的空格

备注:以下输出中的空格表示为暗框,新行显示为段落标记(¶)。

?????
█???█
██?██
█???█
?????

我现在的代码输出是这样的,没有右边的空格如何,我希望它打印上面的空间:

?????¶
█???¶
██?¶
█???¶
?????¶

失败

see this link please

2 个答案:

答案 0 :(得分:0)

如果您更改星号方法签名如下,您应该可以解决它

public static void stars(int size, int beg, int end, char symbol)

答案 1 :(得分:0)

int subtract = (int)Math.floor(size / 2);

    for(int i = size - subtract; i >= 1; i--){

      for(int j=i;j<size - subtract;j++){          
          System.out.print(' ');
        }

      for(int j=1;j<=i*2-1;j++){          
          System.out.print(symbol);
        }

      for(int j = i; j < size - subtract; j++){
         System.out.print(' ');
        }

          System.out.println();
    }

    for(int i = 2; i <= size - subtract; i++)
    {

     for(int j=i;j<size - subtract;j++){
         System.out.print(' ');
        }

     for(int j=1;j<=i*2-1;j++){         
         System.out.print(symbol);
        }

     for(int j = i; j < size - subtract; j++){
         System.out.print(" ");
        }

        System.out.println();
    } 
感谢每一个试图帮助我的人和那个答案的人