00:00

Java Program to Print Downward Left Triangle Character Pattern - 2

Last updated:

In this program we print a downward left triangle of letters. Every row starts at A, each row is one letter shorter than the row above it, and one more space in front keeps the right edge straight.

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. Java stores a char as a number, so adding to 'A' and casting back with (char) gives the following letters.

1. The Pattern

For 5 rows the program prints:

Pattern
ABCDE
 ABCD
  ABC
   AB
    A

2. How the Program Works

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

LineLeading spacesPrinted after the spaces
10ABCDE
21ABCD
32ABC
43AB
54A
  • 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 letters, starting at A.
  • System.out.println() moves to the next line after each row.

3. Java Program

Pattern11.java
public class Pattern11 {
    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 letters A, B, C ... (numberOfRows - row + 1 letters)
            for (int column = 1; column <= numberOfRows - row + 1; column++) {
                System.out.print((char) ('A' + column - 1));
            }
            // move to the next line
            System.out.println();
        }
    }
}
Output
ABCDE
 ABCD
  ABC
   AB
    A

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.

Pattern11Input.java
import java.util.Scanner;

public class Pattern11Input {
    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 letters A, B, C ... (numberOfRows - row + 1 letters)
            for (int column = 1; column <= numberOfRows - row + 1; column++) {
                System.out.print((char) ('A' + column - 1));
            }
            // move to the next line
            System.out.println();
        }
    }
}
Output (with sample input)
Enter the number of rows: 6
ABCDEF
 ABCDE
  ABCD
   ABC
    AB
     A
Note: there are only 26 letters. Past Z, (char) ('A' + 26) is [, not a letter, so keep the number of rows small enough that the pattern never needs a letter after Z.

5. Summary

  • The outer loop picks the row; the inner loops print the spaces and the letters for that row.
  • (char) ('A' + k) gives the letter k places after A.
  • Keep numberOfRows in a variable, so the same program can print the pattern in any size.

Related Programs