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)
我认为安德烈的答案是最简洁的,但如果你想拥有可配置的住宅建筑,你可以使用下一个(尝试更改高度/宽度以查看效果):
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()语句内的布尔表达式,看看会发生什么,但我鼓励您拿一张纸,尝试用纸和笔玩,看看某些点有什么属性。如果您需要更多解释,请告诉我。