'Cannot figure out how to get Pascal Triangle In Java

I am supposed to get this series

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

NOTE:The spaces mentioned have to be present it should have the exact same output as i have mentioned I tried this:

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

This did not work any help will be appreciated



Solution 1:[1]

Your code would not compile because your main method was not defined correctly. This is one thing but not the main reason why you were getting an unexpected output.


Your s variable represent one integer on each line.

What you'll have to do from there is split your int and print each one of the digits seperately.


Here is a correction, I used an enhanced loop and a charArray to print the digits seperately but there are other ways to achieve this of course (using a loop and integer division works also or modify the way you find s).

Solution

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

PS : Multiplying by 11 wont work when you'll need numbers with a length of 2. I'll edit my answer right now.

Here is the algorithm solution

public static void main(String[] args) {
  int rows = 6;
  int[][] triangle = new int[rows][rows];

  for (int i = 1; i <= rows; i++) {
    for (int j = 0; j < i; j++) {
      if (j == 0) triangle[i - 1][j] = 1;
      else triangle[i - 1][j] = triangle[i - 2][j - 1] + triangle[i - 2][j];
      System.out.print(triangle[i - 1][j] + " ");
    }
    System.out.println();
  }
}

Solution 2:[2]

I finally also got an alternative to do the same here it goes

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

Solution 3:[3]

Now this one is working properly .enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Community
Solution 2 Community
Solution 3