Java模式程序错误

时间:2016-03-25 17:58:50

标签: java for-loop

我想制作一个提供此输出的程序:

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

最大星数是' n'但是,我的代码在这里出了问题。将不胜感激。

class test
{
    public static void main(int n)
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=i;j++)
            {
                System.out.print("*");
            }
            for(int x=n;x>=1;x--)
            {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

你几乎就在那里 - 把它想象成一个直立的三角形,然后是一个倒三角形。在第一个中,有N行,每行具有越来越多的星号,从一个到N.在第二个中,每行的星号数量从N-1减少到1:

for (int i = 1; i <= n; ++i) {
    for (int j = 0; j < i; ++j) {
        System.out.print('*');
    }
    System.out.println();
}
for (int i = n - 1; i >= 1; --i) {
    for (int j = 0; j < i; ++j) {
        System.out.print('*');
    }
    System.out.println();
}

当然,通过提取内部for循环可以使这更加优雅,它将每一行创建为自己的方法:

private static void printRow (int i) {
    for (int j = 0; j < i; ++j) {
       System.out.print('*');
    }
    System.out.println();
}

private static void main (String[] args) {
    for (int i = 1; i <= n; ++i) {
        printRow(i);
    }
    for (int i = n - 1; i >= 1; --i) {
        printRow(i);
    }
}