Java Program to Print Left Pascal Triangle Star Pattern
In this program we print a left Pascal triangle of stars: the rows grow to five stars and shrink back to one, lined up on the right side, so the shape points to the left.
Like every pattern program, it is built from nested loops: the outer loop picks the row, and the inner loops print what goes on that row.
1. The Pattern
For 5 rows the program prints:
Pattern
*
**
***
****
*****
****
***
**
*
2. How the Program Works
Here is what each printed line is made of when numberOfRows is 5:
| Line | Leading spaces | Printed after the spaces |
|---|---|---|
| 1 | 4 | * |
| 2 | 3 | ** |
| 3 | 2 | *** |
| 4 | 1 | **** |
| 5 | 0 | ***** |
| 6 | 1 | **** |
| 7 | 2 | *** |
| 8 | 3 | ** |
| 9 | 4 | * |
- Both parts print
numberOfRows - rowspaces and thenrowstars. - Step 1 counts
rowup from 1 tonumberOfRows. - Step 2 counts
rowdown fromnumberOfRows - 1to 1. It starts one row lower so the longest row is printed only once. System.out.println()moves to the next line after each row.
3. Java Program
public class LeftPascalTriangleStarPattern {
public static void main(String[] args) {
int numberOfRows = 5;
// Step 1: top half, rows get longer
for (int row = 1; row <= numberOfRows; row++) {
for (int column = 1; column <= numberOfRows - row; column++) {
System.out.print(" ");
}
for (int column = 1; column <= row; column++) {
System.out.print("*");
}
System.out.println();
}
// Step 2: bottom half, rows get shorter again, without repeating the longest row
for (int row = numberOfRows - 1; row >= 1; row--) {
for (int column = 1; column <= numberOfRows - row; column++) {
System.out.print(" ");
}
for (int column = 1; column <= row; column++) {
System.out.print("*");
}
System.out.println();
}
}
}
Output
*
**
***
****
*****
****
***
**
*
4. Print the Pattern for Any Number of Rows
To let the user choose the size of the pattern, read the number of rows with a Scanner. The loops stay the same.
import java.util.Scanner;
public class LeftPascalTriangleStarPatternInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the number of rows: ");
int numberOfRows = scanner.nextInt();
scanner.close();
// Step 1: top half, rows get longer
for (int row = 1; row <= numberOfRows; row++) {
for (int column = 1; column <= numberOfRows - row; column++) {
System.out.print(" ");
}
for (int column = 1; column <= row; column++) {
System.out.print("*");
}
System.out.println();
}
// Step 2: bottom half, rows get shorter again, without repeating the longest row
for (int row = numberOfRows - 1; row >= 1; row--) {
for (int column = 1; column <= numberOfRows - row; column++) {
System.out.print(" ");
}
for (int column = 1; column <= row; column++) {
System.out.print("*");
}
System.out.println();
}
}
}
Output (with sample input)
Enter the number of rows: 4 * ** *** **** *** ** *
5. Summary
- The outer loop picks the row; the inner loops print the spaces and the stars for that row.
- Work out how many spaces and stars each row needs, then write one inner loop for each.
- Keep
numberOfRowsin a variable, so the same program can print the pattern in any size.
Related Programs
Was this tutorial helpful?