只是为了玩,我试着编写一个程序,所以我可以使用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 7 7
8 8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9 9
但是当我想要超过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
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语句会有所帮助,但似乎没有。
答案 0 :(得分:0)
如果您要打印单个数字,可以在每个数字后面加一个空格以匹配双位数的长度。这样你就可以去99.
在更大范围内应用此方法只是意味着您必须在主循环之前进行检查,这将告诉您最大数字的长度,并补充长度差异,如果带有空格的较短数字。
答案 1 :(得分:0)
只需更改内部循环:此处为k=i-1
,因为您正在检查i>9
和i<9
,因此将排除11。 我想您正在尝试管理两位数和一位数之间的空格。但是您可以使用单i<=10
和i>10
的双倍空格
for (int k = 20; k > i - 1; k--) {
if (i <= 10) {
System.out.print(" "+(20 - i));//Single Space
} else if (i > 10) {
System.out.print(" "+(20 - i));//Double Space
}
}
注意:这个三角形可能看起来很奇怪
答案 2 :(得分:0)
应该适用于任何数量的行。虽然没有测试成千上万。
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"));
}
}