00:00

Java Program to Print Alphabet 'V' Number Pattern

Last updated:

In this program we print the numbers 1 to 5 in the shape of the letter V. Each row prints its row number twice, and the two numbers move closer together until they meet at the bottom.

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
 2     2
  3   3
   4 4
    5

2. How the Program Works

  • Every row is 2 * numberOfRows - 1 characters wide: a left half of numberOfRows columns and a mirrored right half of numberOfRows - 1 columns.
  • The left half loops column from 1 to numberOfRows and prints the number only where column == row; every other position gets a space.
  • The right half loops column back down from numberOfRows - 1 to 1 with the same check, which mirrors the left half.
  • On the last row the left half reaches the middle column and the right half never prints, so 5 appears only once.

3. Java Program

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

        // outer loop for the rows
        for (int row = 1; row <= numberOfRows; row++) {
            // left half: print the row number in column row
            for (int column = 1; column <= numberOfRows; column++) {
                if (column == row) {
                    System.out.print(column);
                } else {
                    System.out.print(" ");
                }
            }
            // right half: the same, mirrored, without repeating the middle column
            for (int column = numberOfRows - 1; column >= 1; column--) {
                if (column == row) {
                    System.out.print(column);
                } else {
                    System.out.print(" ");
                }
            }
            // move to the next line
            System.out.println();
        }
    }
}
Output
1       1
 2     2
  3   3
   4 4
    5

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.

Pattern15Input.java
import java.util.Scanner;

public class Pattern15Input {
    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 half: print the row number in column row
            for (int column = 1; column <= numberOfRows; column++) {
                if (column == row) {
                    System.out.print(column);
                } else {
                    System.out.print(" ");
                }
            }
            // right half: the same, mirrored, without repeating the middle column
            for (int column = numberOfRows - 1; column >= 1; column--) {
                if (column == row) {
                    System.out.print(column);
                } else {
                    System.out.print(" ");
                }
            }
            // move to the next line
            System.out.println();
        }
    }
}
Output (with sample input)
Enter the number of rows: 7
1           1
 2         2
  3       3
   4     4
    5   5
     6 6
      7
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