使用Java程序以盒子星形模式打印盒子

时间:2019-05-10 19:58:43

标签: java algorithm

我一直在使用Java程序练习模式,直到我得到如下所示的盒星型模式中的高级框,其中N = 7作为最大7×7星盒,然后是5×5、3x3 n 1×1星盒

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

我尝试过

 for (int i = 1; i <= 7; i++) {
    if (i == 1 || i == 7) {
        for (int j = 1; j <= 7; j++) {
            System.out.print("*");
        }
        System.out.println();
    } else {
        for (int j = 1; j <= 7; j++) {
            if (i % 2 == 0) {
                if (j % 2 != 0) // for even rows ???
                    System.out.print("*");
                else
                    System.out.print(" ");
            } else {
                if (j <= i)
                    System.out.print("*");
                else {
                    if (j % 2 != 0)
                        System.out.print("*");
                    else
                        System.out.print(" ");
                }

            }

        }
     System.out.println()

    }}

缺少使偶数行在空格后打印星星的条件

这是我的 enter image description here

1 个答案:

答案 0 :(得分:1)

解决问题的一种方法是研究*的位置。在这些位置打印*,并在其他位置打印空格。在这种情况下,*位于三组中,如下所示:

enter image description here

红色组由所有*组成,其中行或列均为1。

在绿色组中,当列大于行且列为奇数时,将打印*

在蓝色组中,当列小于或等于行且行为奇数时,将打印*

请记住,代码如下所示:

for (int row = 1; row <= 7; row++) {
    for (int col = 1; col <= 7; col++) {
        if (row == 1 || col == 1)       // red group
            System.out.print("*");
        else if (col > row && col % 2)  // green group
            System.out.print("*");
        else if (col <= row && row % 2) // blue group
            System.out.print("*");
        else
            System.out.print(" ");
    }
    System.out.println();
}