Pascal的三角形没有使用数组(只有循环)

时间:2014-05-29 15:51:22

标签: java

我试图用星号(*)输出Pascal的三角形。这是我的代码:

public static void main(String [] arg)
{
    int n=3;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n-i;j++)
        {
            System.out.print(" ");
        }
        boolean b=true;
        for(int k=0;k<i*2+1;k++)
        {
            if(b)
            {
                System.out.print("*");
                b=false;
            }
            else
            {
                System.out.print(" ");
                b=true;
            }

        }
    }
    System.out.println(" ");
}
}

我已经多次重新检查,但没有发现任何错误。 另请告诉我if-block是否正确实现。 以下代码未提供如下所需的输出:

     *  
   *   *  
*    *    * 

2 个答案:

答案 0 :(得分:0)

使内循环反转

for(int j=n-i;j>0;j--)
        {
            System.out.print(" ");
        }

这应该从3开始然后2然后1星

打印

答案 1 :(得分:0)

您的System.out.println()声明超出了for循环而非内部。

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n - i; j++) {
            System.out.print(" ");
        }
        boolean b = true;
        for (int k = 0; k < i * 2 + 1; k++) {
            if (b) {
                System.out.print("*");
                b = false;
            } else {
                System.out.print(" ");
                b = true;
            }
        }
    }
    System.out.println(" "); // called only once

    // output is
    //   *  * * * * * 

只需将其移动到近大括号中,您的程序就可以正常工作。

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n - i; j++) {
            System.out.print(" ");
        }
        boolean b = true;
        for (int k = 0; k < i * 2 + 1; k++) {
            if (b) {
                System.out.print("*");
                b = false;
            } else {
                System.out.print(" ");
                b = true;
            }
        }
        System.out.println(" "); // called once for each iteration
    }

    // output is
    //   * 
    //  * * 
    // * * *