我是 Java 新手,我正在使用嵌套 for 循环制作两个三角形的正方形。它应该看起来像这样:
+ + + + +
* + + + +
* * + + +
* * * + +
* * * * +
到目前为止我的代码看起来像这样:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < i; j++) {
System.out.print("* ");
}
System.out.println();
但它给我的只是广场的星形部分。我不知道如何离开这里。有人可以帮忙吗?
添加
i
星星后,请添加5-i
加号
int lineLength = 5;
for (int i = 0; i < lineLength; i++) {
for (int j = 0; j < i; j++) {
System.out.print("* ");
}
for (int j = 0; j < lineLength - i; j++) {
System.out.print("+ ");
}
System.out.println();
}
您可以使用
String.repeat
来简化代码
int lineLength = 5;
for (int i = 0; i < lineLength; i++) {
System.out.println("* ".repeat(i) + "+ ".repeat(lineLength - i));
}
编辑添加解释。
第一步是创建一个 5 x 5 的网格。我们可以通过创建两个 for 循环(一个在另一个循环中)来做到这一点。内部 for 循环将打印一行
*
,外部 for 循环将在每行后打印一个新行。
下一步是确定何时打印
+
而不是 *
。对于您的情况,简单的大于 (y > x
) 就可以了。
for (int y = 0; y < 5; y++) {
for (int x = 0; x < 5; x++) {
System.out.print(y > x ? "* " : "+ ");
}
System.out.println();
}
使用 Desmos 图形计算器进行演示。
请注意,y 轴是反向的,您可以使用
-y > x
来获得正确的方向
您可以利用 Arrays#fill 方法来预填充 char 的二维数组。
然后,迭代将相应的索引替换为星号。
char[][] characters = new char[5][5];
for (char[] row : characters) Arrays.fill(row, '+');
int count = 0;
for (char[] row : characters) {
for (int index = 0; index < count; index++)
row[index] = '*';
count++;
}
int index = 0;
for (char[] row : characters) {
for (char character : row) {
if (index++ != 0) System.out.print(" ");
System.out.print(character);
}
index = 0;
System.out.println();
}
输出
+ + + + +
* + + + +
* * + + +
* * * + +
* * * * +
此外,您可以使用允许输入值的方法。
void draw(int size, char charA, char charB) {
char[][] characters = new char[size][size];
for (char[] row : characters) Arrays.fill(row, charB);
int count = 0;
for (char[] row : characters) {
for (int index = 0; index < count; index++)
row[index] = charA;
count++;
}
int index = 0;
for (char[] row : characters) {
for (char character : row) {
if (index++ != 0) System.out.print(" ");
System.out.print(character);
}
index = 0;
System.out.println();
}
}
示例用法和输出。
draw(20, '@', '-');
- - - - - - - - - - - - - - - - - - - -
@ - - - - - - - - - - - - - - - - - - -
@ @ - - - - - - - - - - - - - - - - - -
@ @ @ - - - - - - - - - - - - - - - - -
@ @ @ @ - - - - - - - - - - - - - - - -
@ @ @ @ @ - - - - - - - - - - - - - - -
@ @ @ @ @ @ - - - - - - - - - - - - - -
@ @ @ @ @ @ @ - - - - - - - - - - - - -
@ @ @ @ @ @ @ @ - - - - - - - - - - - -
@ @ @ @ @ @ @ @ @ - - - - - - - - - - -
@ @ @ @ @ @ @ @ @ @ - - - - - - - - - -
@ @ @ @ @ @ @ @ @ @ @ - - - - - - - - -
@ @ @ @ @ @ @ @ @ @ @ @ - - - - - - - -
@ @ @ @ @ @ @ @ @ @ @ @ @ - - - - - - -
@ @ @ @ @ @ @ @ @ @ @ @ @ @ - - - - - -
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ - - - - -
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ - - - -
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ - - -
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ - -
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ -