Java 我的任务是建造一座房子,用以建造环路。这房子应该是这样的

Java 我的任务是建造一座房子,用以建造环路。这房子应该是这样的,java,printing,geometry,Java,Printing,Geometry,到目前为止,我只有这个 * ***** ********* ********* **** *** **** *** 对于(int i=1;i您可以使用如下二维数组: for (int i=1; i<10; i += 4) { for (int j=0; j<i; j++) { System.out.print("*"); } System.out.println("");

到目前为止,我只有这个

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

对于(int i=1;i您可以使用如下二维数组:

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

      for (int j=0; j<i; j++)
      {
        System.out.print("*");
      }
      System.out.println("");
    }
  }
}
char matrice [][]= {{' ',' ',' ',' ' '*', ' ',' ',' ',' '},
        {' ',' ','*','*', '*', '*','*',' ',' '}}; 
(等等)。基本上,您可以使用数组索引绘制房子

现在,当需要打印字符时,可以使用System.out.print()解析每一行,并在每一行之间使用System.out.println(“”)

它看起来是这样的:

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

      for (int j=0; j<i; j++)
      {
        System.out.print("*");
      }
      System.out.println("");
    }
  }
}
char matrice [][]= {{' ',' ',' ',' ' '*', ' ',' ',' ',' '},
        {' ',' ','*','*', '*', '*','*',' ',' '}}; 

如果您不熟悉,请查看。最简单的决定是:

for(char[] line : house){

    for(char d : line){
        System.out.print(d);
    }

    System.out.println("");

}
for(int y=0;y<6;y++){
int-shift=y<2?4/(y+1):0;
对于(intx=0;x<9-shift;x++)系统输出打印(x>=shift&&(y<4|||(x<4||x>5))?“*”:”;
System.out.println();
}

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

公共类房屋{
公共静态void main(字符串[]args){
最终整数高度=6;
最终整数宽度=9;
对于(int i=0;i=高度*2/3)&&&(j>=宽度/2)&&j<宽度/2+高度/3){//检查车门
系统输出打印(“”);
}否则{///那么
系统输出打印(“*”);
}
}
}
System.out.println();
}
}
}
编辑-回复评论: 尝试运行下两个示例并比较输出:

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

    }
}
publicstaticvoidmain(字符串[]args){
最终整数大小=9;
对于(int i=0;i

publicstaticvoidmain(字符串[]args){
最终整数大小=9;
对于(int i=0;i
第一个会给你们右斜率,第二个会给你们左斜率。这都来自点的几何特性。在第一种情况下,所有点在x轴上的值都比在y轴上的值大。在第二种情况下,x和y的总和都不会超过大小


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

你的代码有哪些假设?你是要让用户输入房子的高度和宽度?还是只需要输入红色表示给1个边?还是已经给了边?@Michael,因为有很多解决方案……请告诉我们您的限制,例如允许的for循环数或其他。非常感谢。您能再解释一下代码,以及您将如何处理这些类型的问题吗?因为我将遇到许多类似的问题这是将来的事,我想确定我知道怎么做。我又添加了两个基本样本。
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();
    }
}