00:00

Java Program to Print Left Triangle Character Pattern - 2

Last updated:

In this program we print a left triangle where every row repeats one letter. The rows are lined up on the right side, so the triangle leans 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. 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
    A
   BB
  CCC
 DDDD
EEEEE

2. How the Program Works

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

LineLeading spacesPrinted after the spaces
14A
23BB
32CCC
41DDDD
50EEEEE
  • The outer loop runs once for each row, from 1 to numberOfRows.
  • letter is the letter for the row: A for row 1, B for row 2, and so on.
  • The first inner loop prints numberOfRows - row spaces.
  • The second inner loop prints letter row times.
  • System.out.println() moves to the next line after each row.

3. Java Program

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

        // outer loop for the rows
        for (int row = 1; row <= numberOfRows; row++) {
            char letter = (char) ('A' + row - 1);
            // inner loop to print the spaces
            for (int column = 1; column <= numberOfRows - row; column++) {
                System.out.print(" ");
            }
            // inner loop to print the row letter, row times
            for (int column = 1; column <= row; column++) {
                System.out.print(letter);
            }
            // move to the next line
            System.out.println();
        }
    }
}
Output
    A
   BB
  CCC
 DDDD
EEEEE

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.

Pattern5Input.java
import java.util.Scanner;

public class Pattern5Input {
    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++) {
            char letter = (char) ('A' + row - 1);
            // inner loop to print the spaces
            for (int column = 1; column <= numberOfRows - row; column++) {
                System.out.print(" ");
            }
            // inner loop to print the row letter, row times
            for (int column = 1; column <= row; column++) {
                System.out.print(letter);
            }
            // move to the next line
            System.out.println();
        }
    }
}
Output (with sample input)
Enter the number of rows: 6
     A
    BB
   CCC
  DDDD
 EEEEE
FFFFFF
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