我的任务是使用for循环来建造房屋.房子应该是这样的

Mic*_*son 5 java printing geometry

    *      
  *****
*********
*********
****  ***
****  ***
Run Code Online (Sandbox Code Playgroud)

到目前为止我只有这个

for (int i=1; i<10; i += 4)
    {

      for (int j=0; j<i; j++)
      {
        System.out.print("*");
      }
      System.out.println("");
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*iuk 0

我认为安德烈的答案是最简洁的,但如果你想拥有可配置的住宅建筑,你可以使用下一个(尝试更改高度/宽度以查看效果):

public class House {

    public static void main(String[] args) {
        final int HEIGHT = 6;
        final int WIDTH = 9;

        for (int i = 0; i < HEIGHT * 2; i += 2) {
            for (int j = 0; j < WIDTH; j++) {// check for roof
                if ((i + (i % 2) + (WIDTH) / 2) < j // right slope
                        || (i + (i % 2) + j) < (WIDTH) / 2)// left slope
                {
                    System.out.print(" ");
                } else {
                    if ((i / 2 >= HEIGHT * 2 / 3) && (j >= WIDTH / 2) && j < WIDTH / 2 + HEIGHT / 3) {// check for door
                        System.out.print(" ");
                    } else {// solid then
                        System.out.print("*");
                    }
                }
            }
            System.out.println();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

编辑- 评论的答案:尝试运行下两个示例并比较输出:

public static void main(String[] args) {
    final int SIZE = 9;
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            System.out.print(i < j ? "+" : "-");
        }
        System.out.println();
    }
}
Run Code Online (Sandbox Code Playgroud)

public static void main(String[] args) {
    final int SIZE = 9;
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            System.out.print(i < SIZE - j - 1 ? "+" : "-");
        }
        System.out.println();
    }
}
Run Code Online (Sandbox Code Playgroud)

第一个将为您提供右坡度,第二个将为您提供左坡度。这一切都来自于点的几何性质。在第一种情况下,所有点在 x 轴上的值都比 y 轴上的值大。第二,x 和 y 的总和不会超过 SIZE。

您可以尝试修改if()语句内的布尔表达式,看看会发生什么,但我鼓励您拿一张纸,尝试用纸和笔玩,看看某些点有什么属性。如果您需要更多解释,请告诉我。