00:00

Java Program to Print Double Triangle Number Pattern - 1

Last updated:

In this program we print two number triangles that face each other. The left one counts up from 1, the right one counts back down to 1, and the gap between them closes on the last 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
1        1
12      21
123    321
1234  4321
1234554321

2. How the Program Works

  • Every row is 2 * numberOfRows characters wide: numberOfRows columns for each triangle.
  • The left half loops column from 1 to numberOfRows. It prints the column number while column <= row and a space after that.
  • The right half loops column from numberOfRows down to 1. It prints a space while column > row and the column number after that.
  • System.out.println() moves to the next line after each row.

3. Java Program

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

        // outer loop for the rows
        for (int row = 1; row <= numberOfRows; row++) {
            // left triangle: numbers 1 to row, then spaces
            for (int column = 1; column <= numberOfRows; column++) {
                if (column <= row) {
                    System.out.print(column);
                } else {
                    System.out.print(" ");
                }
            }
            // right triangle: spaces, then numbers row down to 1
            for (int column = numberOfRows; column >= 1; column--) {
                if (column > row) {
                    System.out.print(" ");
                } else {
                    System.out.print(column);
                }
            }
            // move to the next line
            System.out.println();
        }
    }
}
Output
1        1
12      21
123    321
1234  4321
1234554321

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.

Pattern18Input.java
import java.util.Scanner;

public class Pattern18Input {
    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++) {
            // left triangle: numbers 1 to row, then spaces
            for (int column = 1; column <= numberOfRows; column++) {
                if (column <= row) {
                    System.out.print(column);
                } else {
                    System.out.print(" ");
                }
            }
            // right triangle: spaces, then numbers row down to 1
            for (int column = numberOfRows; column >= 1; column--) {
                if (column > row) {
                    System.out.print(" ");
                } else {
                    System.out.print(column);
                }
            }
            // move to the next line
            System.out.println();
        }
    }
}
Output (with sample input)
Enter the number of rows: 7
1            1
12          21
123        321
1234      4321
12345    54321
123456  654321
12345677654321
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