00:00

Java Program to Print Downward Pyramid Star Pattern

Last updated:

In this program we print an upside-down pyramid of stars. The first row has five stars, and each row after it has one star fewer and one more leading space, so the rows stay centered.

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:

LineLeading spacesPrinted after the spaces
10* * * * *
21* * * *
32* * *
43* *
54*
  • The outer loop runs once for each row, from 1 to numberOfRows.
  • The first inner loop prints row - 1 spaces.
  • The second inner loop prints numberOfRows - row + 1 stars as "* ".
  • System.out.println() moves to the next line after each row.

3. Java Program

DownwardPyramidStarPattern.java
public class DownwardPyramidStarPattern {
    public static void main(String[] args) {
        int numberOfRows = 5;

        // outer loop for the rows
        for (int row = 1; row <= numberOfRows; row++) {
            // inner loop to print the spaces
            for (int column = 1; column < row; column++) {
                System.out.print(" ");
            }
            // inner loop to print the stars
            for (int column = 1; column <= numberOfRows - row + 1; column++) {
                System.out.print("* ");
            }
            // move to the next line
            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.

DownwardPyramidStarPatternInput.java
import java.util.Scanner;

public class DownwardPyramidStarPatternInput {
    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();

        // outer loop for the rows
        for (int row = 1; row <= numberOfRows; row++) {
            // inner loop to print the spaces
            for (int column = 1; column < row; column++) {
                System.out.print(" ");
            }
            // inner loop to print the stars
            for (int column = 1; column <= numberOfRows - row + 1; column++) {
                System.out.print("* ");
            }
            // move to the next line
            System.out.println();
        }
    }
}
Output (with sample input)
Enter the number of rows: 6
* * * * * *
 * * * * *
  * * * *
   * * *
    * *
     *

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 numberOfRows in a variable, so the same program can print the pattern in any size.

Related Programs