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

到目前为止,我只有这个
for (int i=1; i<10; i += 4)
    {

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

最佳答案

我认为Andre的答案是最简洁的答案,但是如果您想拥有可配置的房屋建筑,则可以使用下一个答案(尝试更改HEIGHT/WIDTH以查看效果):

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

    }
}

编辑-评论的答案:
尝试运行下面的两个示例并比较输出:
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();
    }
}


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

第一个给你右斜率,第二个给你左斜率。所有这些都来自点的几何特性。在第一种情况下,所有点在x轴上的值将大于在y轴上的值。在第二秒,x和y的总和将不超过SIZE。

您可以尝试在if()语句中修改 boolean 表达式,看看会发生什么,但是我鼓励您拿纸做些,尝试用纸和笔玩,看看某些点具有什么特性。让我知道您是否需要更多说明。

10-07 20:48