使用循环在Java中绘制等腰三角形

时间:2015-11-19 14:08:59

标签: java loops for-loop methods char

这就是问题:
创建一个IsoTri应用程序,提示用户输入等腰三角形的大小,然后显示包含多行的三角形。

示例:4

*
**
***
****
***
**
*

IsoTri应用程序代码应包含printChar(int n, char ch)方法。此方法将ch打印到屏幕n次。

这是我到目前为止所做的:

public static void main(String[] args) {
        int n = getInt("Give a number: ");
        char c = '*';
        printChar(n, c);


    }

    public static int getInt(String prompt) {
        int input;

        System.out.print(prompt);
        input = console.nextInt();

        return input;
    }

    public static void printChar(int n, char c) {
        for (int i = n; i > 0; i--) {
            System.out.println(c);
        }

    }

我不确定如何打印三角形。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

您需要两个嵌套for循环:

public static void printChar(int n, char c) {
    // print the upper triangle
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < i + 1; ++j) {
            System.out.print(c);
        }
        System.out.println();
    }

    // print the lower triangle
    for (int i = n - 1; i > 0; --i) {
        for (int j = 0; j < i; ++j) {
            System.out.print(c);
        }
        System.out.println();
    }
}

答案 1 :(得分:2)

首先,您的printChar是错误的。它将在新行中打印每**。您需要打印n字符public static void printChar(int n, char c) { for (int i = n; i > 0; i--) { System.out.print(c); } System.out.println(); } 次,然后再打印一行。 E.g。

printChar

在那之后你必须使用public static void main(String[] args) { int n = getInt("Give a number: "); char c = '*'; // first 3 lines for (int i = 1; i < n; ++i) printChar(i, c); // other 4 lines for (int i = n; i > 0; --i) printChar(i, c); } 我会推荐2 for循环一个递增一个deincrementing

{{1}}

答案 2 :(得分:0)

一个小的递归解决方案:

private static String printCharRec(String currStr, int curr, int until, char c) {
    String newStr = "";
    for (int i = 1; i < curr; i++)
        newStr += c;
    newStr += '\n';
    currStr += newStr;

    if (curr < until) {
        currStr = printCharRec(currStr, curr+1, until, c);
        currStr += newStr;
    }

    return currStr;
}