Java Program for Diamond Shape Pattern

Creating a diamond pattern in Java is a great way to practice loops and understand the logic behind pattern printing. In this blog post, we'll write a Java program to print a diamond shape consisting of asterisks (*). This pattern is a combination of two components: the upper half and the lower half. The upper half is an ascending triangle, and the lower half is a descending triangle. Let's dive into how we can achieve this.

Step 1: Understand the Diamond Structure 

A diamond pattern of height n (considering n as the length of the diagonal from the center to a corner) involves printing spaces and asterisks (*) in a specific order. The pattern's width and height are the same, making it perfectly symmetrical vertically and horizontally.

Step 2: Writing the Java Program 

Here is a Java program that outputs a diamond shape pattern based on the number of rows input by the user, with detailed comments in the code, and an explanation for each step:

package com.example.shorts.programs;

import java.util.Scanner;

public class DiamondShapePattern {

    public static void main(String[] args) {
        // Initialize scanner to read from the console
        Scanner scanner = new Scanner(System.in);

        // Display the program title
        System.out.println("Diamond Shape Pattern Generator");

        // Ask the user for the number of rows (half of the diamond height)
        System.out.print("Enter the number of rows for half of the diamond: ");
        int numRows = scanner.nextInt(); // Read the number of rows from user input

        // Print the upper half of the diamond
        for (int i = 1; i <= numRows; i++) {
            // Print leading spaces
            for (int j = numRows - i; j >= 1; j--) {
                System.out.print(" ");
            }
            // Print stars
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println(); // Move to the next line
        }

        // Print the lower half of the diamond
        for (int i = numRows - 1; i >= 1; i--) {
            // Print leading spaces
            for (int j = 1; j <= numRows - i; j++) {
                System.out.print(" ");
            }
            // Print stars
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println(); // Move to the next line
        }

        // Close the scanner
        scanner.close();
    }
}

Step 3: Step-by-Step Explanation 

Scanner Initialization: The program starts by creating a Scanner object to enable reading the user's input from the console. 

Program Introduction: A brief title is displayed to inform the user about the program's functionality. 

User Input for Rows: The program prompts the user to input the number of rows for half of the diamond, ensuring a symmetrical shape. The input value is captured using a scanner.nextInt()

Upper Half Generation
  • Loop for Rows: Iterates from 1 to numRows, where each iteration represents a row in the upper half of the diamond. 
  • Loop for Spaces: Before printing stars, this loop outputs spaces to align the stars properly and create the narrowing effect as the row number decreases. 
  • Loop for Stars: Prints a sequence of stars (*) that increases with each row, forming the expanding part of the diamond. 
Lower Half Generation
  • Loop for Rows: Counts down from numRows - 1 to 1 to print the lower half of the diamond, mirroring the upper half. 
  • Loop for Spaces: Outputs leading spaces to align the stars correctly, inversely proportional to the row number to create the widening effect as the row number decreases. 
  • Loop for Stars: Prints stars that decrease with each subsequent row, completing the diamond shape. 
Line Break: After printing each row's stars, a new line is started, maintaining the diamond's structured appearance. 

Scanner Closure: Closes the Scanner object to prevent resource leaks, adhering to best coding practices. 

Example Output for numRows = 10

Given the user inputs 4 for the number of rows, the program's output will display a symmetrical diamond shape:



Comments