*
*****
*********
*********
**** ***
**** ***
到目前为止,我只有这个
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 表达式,看看会发生什么,但是我鼓励您拿纸做些,尝试用纸和笔玩,看看某些点具有什么特性。让我知道您是否需要更多说明。