Java 如何使用for循环生成完美的锐角三角形?
只是为了玩,我试着写一个程序,这样我就可以使用for循环生成一个锐角三角形,所以我的输出如下:Java 如何使用for循环生成完美的锐角三角形?,java,for-loop,Java,For Loop,只是为了玩,我试着写一个程序,这样我就可以使用for循环生成一个锐角三角形,所以我的输出如下: 0 1 1 2 2 2 3 3 3 3 4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6 6 7 7 7 7 7 7
0
1 1
2 2 2
3 3 3 3
4 4 4 4 4
5 5 5 5 5 5
6 6 6 6 6 6 6
7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9 9
0
1 1
2 2 2
3 3 3 3
4 4 4 4 4
5 5 5 5 5 5
6 6 6 6 6 6 6
7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9 9
10 10 10 10 10 10 10 10 10 10 10
12 12 12 12 12 12 12 12 12 12 12 12 12
但是,当我想超过10次时,我的锐角三角形就会像这样混乱:
0
1 1
2 2 2
3 3 3 3
4 4 4 4 4
5 5 5 5 5 5
6 6 6 6 6 6 6
7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9 9
0
1 1
2 2 2
3 3 3 3
4 4 4 4 4
5 5 5 5 5 5
6 6 6 6 6 6 6
7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9 9
10 10 10 10 10 10 10 10 10 10 10
12 12 12 12 12 12 12 12 12 12 12 12 12
我的代码如下
public class Triangel {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
for (int i = 20; i > 0; i--) {
for (int j = i - 1; j > 0; j--) {
System.out.print(" ");
}
for (int k = 20; k > i - 1; k--) {
if (i =< 9) {
System.out.print(" " + (20 - i));
} else if (i > 9) {
System.out.print( " "+(20 - i));
}
}
System.out.println();
}
}
}
当我想在9点后打印时,你知道我怎样才能使它成为完美的锐角三角形吗
注意:我认为if语句会有帮助,但似乎没有。如果要打印单个数字,可以在每个数字后面加一个空格,以匹配两位数的长度。这样你就可以达到99
在更大范围内应用此方法只意味着您必须在主循环之前进行检查,这将告诉您最大数字的长度,如果较短的数字带有空格,则会补偿长度差。只需更改内部for循环:此处为k=i-1,因为您正在检查i>9,并且i应适用于任意数量的行。但还没有测试过数千人
public static void main(String[] args) {
int maxRows = 14;
int spaces = String.valueOf(maxRows).length();
for (int i = 1; i <= maxRows; i++) { // for each row
for (int j = 1; j <= maxRows - i; j++) { // add spaces to the left
for (int l = 1; l <= spaces; l++) { // according to number of digits
System.out.print(" ");
}
}
for (int k = 1; k <= i; k++) { // for each column
System.out.print(i);
for (int l = String.valueOf(i).length(); l <= spaces * 2 - 1; l++) { // add spaces inbetween
System.out.print(" ");
}
}
System.out.print(System.getProperty("line.separator"));
}
}
你真的应该能够自己思考这个问题。这只是印刷的方式创造了差异。您可以添加更多空格字符,使其看起来像一个锐角三角形。屏幕中的每个数字都限制在特定的像素数内。如果您想要一个大于9的数字,表示您使用的是2位数字,则此协议被破坏,因此输出中没有对称性。那么你期望什么呢?@Eypros你看到我的if语句部分了吗?你说的是个位数吗?@kickbuttowski个位数是0-9个,双位数是10-99个,依此类推。。数字的字符长度谢谢你。我以后再看。你能不能也运行我的代码,告诉我发生了什么?在你的if语句中,你缺少了i==9的情况。这就是为什么它写了一个空行。还有什么你想知道的吗?谢谢你,我稍后再看。你能告诉我这个三角形看起来有点奇怪吗?你觉得我的方法怎么样?