右对齐三角形使用方法

时间:2015-12-27 03:18:51

标签: java

我需要使用两种方法制作一个右对齐的三角形:

尽可能接近:

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);
    }
}

我不能让空间方法反向打印......它只是并排打印相同的东西,除了一个只是空格。

 *
  **
   ***
    ****

1 个答案:

答案 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);
    }
}
相关问题