00:00

Java Program to Print Left Triangle Number Pattern - 3

Last updated:

In this program we print a left triangle number pattern that counts down. Every row starts at the largest number and counts down, one number further on each row.

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
    5
   54
  543
 5432
54321

2. How the Program Works

Here is what each printed line is made of when numberOfRows is 5:

LineLeading spacesPrinted after the spaces
145
2354
32543
415432
5054321
  • The outer loop runs once for each row, from 1 to numberOfRows.
  • The first inner loop prints numberOfRows - row spaces.
  • The second inner loop counts down from numberOfRows and stops after row numbers.
  • System.out.println() moves to the next line after each row.

3. Java Program

Pattern6.java
public class Pattern6 {
    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 <= numberOfRows - row; column++) {
                System.out.print(" ");
            }
            // inner loop to count down from numberOfRows, row numbers in total
            for (int number = numberOfRows; number > numberOfRows - row; number--) {
                System.out.print(number);
            }
            // move to the next line
            System.out.println();
        }
    }
}
Output
    5
   54
  543
 5432
54321

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.

Pattern6Input.java
import java.util.Scanner;

public class Pattern6Input {
    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 <= numberOfRows - row; column++) {
                System.out.print(" ");
            }
            // inner loop to count down from numberOfRows, row numbers in total
            for (int number = numberOfRows; number > numberOfRows - row; number--) {
                System.out.print(number);
            }
            // move to the next line
            System.out.println();
        }
    }
}
Output (with sample input)
Enter the number of rows: 6
     6
    65
   654
  6543
 65432
654321
Note: once the pattern needs numbers above 9, two-digit numbers take up two positions and the shape is no longer lined up. Print each number with a fixed width, for example System.out.printf("%3d", value), and print three spaces wherever the program prints one, to keep it lined up.

5. Summary

  • The outer loop picks the row; the inner loops print the spaces and the numbers for that row.
  • Work out how many spaces and which numbers 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