我需要解决沙漏任务中的间距问题的帮助,这是说明

使用说明

给定参数size = n和字符符号。

您可以假设n为正奇数。

沙漏由n条线组成。

字符符号将在每行中出现多次。该符号将在第一行中出现n次。在后面的每一行中打印符号的次数将减少2,直到达到1。此后,在随后的每一行中打印符号的次数将增加2,直到再次达到n。

在每行的开头和结尾添加空格,以使每行的总宽度为n,并且每行中的符号在每行的中心对齐。
对于输出,可以使用System.out.print()/ println()或IO.output()/ outputln()。

这是我的代码:

public static void hourglass(int size, char symbol){
         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);

              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);
             System.out.println();

        }

      }


我要正确的是指令集五。我已经读了很多关于数组填充和\ s +删除空格的文章,但这不是我想要的。基本上,我想做的是在绘制完之后在沙漏的左右两侧均匀隔开。

她是我的问题的一个例子:

给定沙漏的大小为3。printHourglass()的预期输出:

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


您的代码输出:

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


我一直在努力解决一整夜,需要尽快提交。请只需要一些提示。

我附上一张图片,以防万一文本无法正确显示。

最佳答案

您是否按原样在此处粘贴了代码?
抱歉地说,但是它的格式很糟糕。
请决定始终使用或不使用方括号,但有时不使用。我建议您始终使用它们,因为这样会使事情变得更加清晰。也要保持良好的缩进:

public static void hourglass(int size, char symbol){

    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);
        }

        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);
        }

        System.out.println();
    }

}


与您发布的代码有关的下一件事是,由于得到以下信息,我无法验证您的输出:
(请注意:为了便于查看,我使用?作为字符和。而不是空格)

//Size 3
???
.?
???

//Size 5
?????
.???
..?
.???
?????


编辑1:
您需要做的是,在字符添加逻辑之后添加空格添加逻辑。
找到可行的循环逻辑是您的工作。

    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(/*find a working loop*/){
            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(/*find a working loop*/){
            System.out.print(' ');
        }

        System.out.println();
    }

10-04 10:15