### 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++) {
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--) {
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: