如何制作沙漏形状?

v6ylcynt  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(354)

我需要在java中使用嵌套循环来制作沙漏形状。我的代码可以绘制形状的基本要素,但没有放置任何空格来生成正确的沙漏形状。目标形状:


* * * * *

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

* * * * *

代码:

for(int i = 5; i >= 0; i--)
    {
        for(int j = 0; j <= 4; j++)
        {
            System.out.print(" ");
        }
        for(int j=0; j<i; j++)
        {
            System.out.print("* ");
        }
        System.out.println("");
    }
    for (int i = 1; i <= 4; i++)
    {
        for(int j = 0; j < 4; j++)
        {
            System.out.print(" ");
        }
        for(int j=0; j <= i; j++)
        {
            System.out.print("* ");
        }
        System.out.println(" ");
    }

它给我的输出是:


* * * * *

 * * * * 
 * * * 
 * * 
 * 

* *
* * *
* * * *
* * * * *
8wigbo56

8wigbo561#

这可能超出了您当前的水平,但为了向您展示在java 11+中可以多么简单地完成这项工作,因此您需要努力做到这一点,以下是一种方法:

static void printHourglass(int size) {
    for (int i = 1 - size; i < size; i++)
        System.out.println(" ".repeat(size - Math.abs(i) - 1) + "* ".repeat(Math.abs(i)) + "*");
}

输出 printHourglass(5) ```







输出 `printHourglass(5)` ```

* * * * * * * * * *

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

* * * * * * * * * *
kx1ctssn

kx1ctssn2#

在下面的解决方案中,可以根据需要更改沙漏的大小 size 变量。

public class Main {

    public static int size = 5;

    public static void main(String[] args) {
        for (int i = size; i > 0; i--) {
            printLineByIndex(i);
            System.out.println();
        }
        for (int i = 2; i < size + 1; i++) {
            printLineByIndex(i);
            if(i != size) { // do not put empty line at the end of the output
                System.out.println();
            }
        }
    }

    public static void printLineByIndex(int i) {
        for (int k = 0; k < size - i; k++) {
            System.out.print(" ");
        }
        for (int j = i; j > 0; j--){
            System.out.print("* ");
        }
    }
}

输出:


* * * * *

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

* * * * *

相关问题