无法弄清楚如何在Java中获得Pascal Triangle

时间:2015-11-08 10:50:55

标签: java

我应该得到这个系列

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

注意:提到的空格必须存在,它应该具有与我提到的完全相同的输出 我试过这个:

class pattern_19
{
 static void main()
 {
     int i,j;
     int s=1;
     System.out.println(s);
     for(i=1;i<=6;i++)
     {
         for(j=1;j<=i;j++)
         {
             s=s*11;
            }
            System.out.println(s);
            s=1;
        }
    }
}
MY OUTPUT:
11
121
1331
14641
161051
1771561

这不起作用任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

您的代码无法编译,因为您的主方法未正确定义。这是一回事,但不是您获得意外输出的主要原因。

您的s变量代表每行的一个整数。

你需要做的就是拆分你的int并分别打印每个数字。

这是一个修正,我使用增强循环和charArray单独打印数字但当然还有其他方法来实现这一点(使用循环和整数除法也可以工作或修改你找到的方式{{1} })。

解决方案

s

PS:当你需要长度为2的数字时,乘以11将无法工作。我现在就编辑我的答案。

这是算法解决方案

public static void main(String[] args)
{
    int i,j;
    int s=1;
    System.out.println(s + " ");
    for(i=1;i<=6;i++)
    {
        for(j=1;j<=i;j++)
        {
            s=s*11;
        }
        for (char c : String.valueOf(s).toCharArray()) System.out.print(c + " ");
        System.out.println();
        s=1;
    }
}

答案 1 :(得分:0)

我终于得到了一个替代方法来做同样的事情

public class PascalTriangle {
    public static void main() {
        int rows = 6;
        for(int i =0;i<rows;i++) {

            int number = 1;

            System.out.format("%"+(rows-i)*2+"s","");

            for(int j=0;j<=i;j++) {

                 System.out.format("%4d",number);


                 number = number * (i - j) / (j + 1);
                }
            System.out.println();
        }
    }
}

答案 2 :(得分:0)

现在这可以正常工作了。enter image description here