我需要使用两种方法制作一个右对齐的三角形:
尽可能接近:
public class Right {
private static void printStars(int k) {
for (int i = 0; i < k; i++) {
System.out.print("*");
}
System.out.println("");
}
private static void printSpaces(int k) {
for (int i = 0; i < k; i++) {
System.out.print(" ");
}
System.out.print("");
}
private static void printTriangle(int k) {
for (int i = 1; i <= k; i++) {
printSpaces(i);
printStars(i);
}
}
public static void main(String[] args) {
printTriangle(4);
}
}
我不能让空间方法反向打印......它只是并排打印相同的东西,除了一个只是空格。
*
**
***
****
答案 0 :(得分:2)
对于您打印的每一行,您都会像星星一样打印多个空格。但是你想要正确对齐,这样才能做对。
你想要的是每一行的一行中的字符总数是相同的,因为你想让三角形的右边每行都在同一个位置。因此,每行应该k
个字符长,因为这是您要打印的最大星数。
由于你已经知道要在每一行上打印多少颗星,你必须从k
中减去它,以找出需要在它前面打印多少空格。所以空格的数量是k - i
(因为星数是i
)。
因此,更改printSpaces
的调用并使其打印k - i
个空格:
private static void printTriangle(int k) {
for (int i = 1; i <= k; i++) {
printSpaces(k - i);
printStars(i);
}
}