Java Program to Print Left Triangle Character Pattern - 2
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:
| Line | Leading spaces | Printed after the spaces |
|---|---|---|
| 1 | 4 | A |
| 2 | 3 | BB |
| 3 | 2 | CCC |
| 4 | 1 | DDDD |
| 5 | 0 | EEEEE |
- The outer loop runs once for each row, from 1 to
numberOfRows. letteris the letter for the row: A for row 1, B for row 2, and so on.- The first inner loop prints
numberOfRows - rowspaces. - The second inner loop prints
letterrowtimes. System.out.println()moves to the next line after each row.
3. Java Program
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.
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 letterkplaces after A.- Keep
numberOfRowsin a variable, so the same program can print the pattern in any size.
Related Programs
Was this tutorial helpful?