Program to Print Hollow Diamond in a Rectangle Star Pattern
In this article we are going to see how to print the Hollow diamond in a Rectangle star program.
Example-1 When row value=4 ******** *** *** ** ** * * * * ** ** *** *** ********
Example-2: When row value=5 ********** **** **** *** *** ** ** * * * * ** ** *** *** **** **** **********
Now, let’s see program to how print it.
Have you mastered basic programming topics of java and looking forward to mastering advanced topics in a java programming language? Go with these ultimate Advanced java programs examples with output & achieve your goal in improving java coding skills.
Approach:
Approach is very simple we just need to attempt it in a modular manner. Means here we can see 4 patters like
- In upper part inverted right triangle and inverted mirrored right triangle.
- In lower part right triangle and mirrored right triangle.
- So, we will take two outer for loops to print the two p[arts.
- And inside outer loops required for loops to be taken to print the column values i.e stars.
JAVA Code:
Method-1 : Static Star Character
import java.util.*;
public class Main
{
public static void main(String args[])
{ // taking variable for loop iteration and row .
int row,r,c,d;
//creating object
Scanner s = new Scanner(System.in);
// entering the number of row
System.out.print("Enter rows : ");
row = s.nextInt();
//printing row value (upper part)
for (r =1; r<=row ; r++)
{
//printing column value (upper part)
for (c= r; c <= row ; c++)
System.out.print("*");
for (c = 1; c <= r*2-2; c++)
System.out.print(" ");
for (c = r; c <= row ; c++)
System.out.print("*");
System.out.println();
}
//printing row value (lower part)
for (r = 1; r <= row ; r ++)
{
//printing column value (upper part)
for (c = 1; c <= r; c++)
System.out.print("*");
for (c = r *2-2; c < row *2-2; c++)
System.out.print(" ");
for (c = 1; c <= r; c ++)
System.out.print("*");
System.out.println();
}
}
}
Output : Enter rows : 5 ********** **** **** *** *** ** ** * * * * ** ** *** *** **** **** **********
Method-2 : User Input Character
import java.util.*;
public class Main
{
public static void main(String args[])
{
// taking variable for loop iteration and row .
int row,r,c,d;
char q;
//creating object
Scanner s = new Scanner(System.in);
// entering the number of row
System.out.print("Enter rows : ");
row = s.nextInt();
// entering any random character
System.out.print("Enter character : ");
q = s.next().charAt(0);
//printing row value (upper part)
for (r =1; r<=row ; r++)
{
//printing column value (upper part)
for (c= r; c <= row ; c++)
System.out.print(q);
for (c = 1; c <= r*2-2; c++)
System.out.print(" ");
for (c = r; c <= row ; c++)
System.out.print(q);
System.out.println();
}
//printing row value (lower part)
for (r = 1; r <= row ; r ++)
{
//printing column value (upper part)
for (c = 1; c <= r; c++)
System.out.print(q);
for (c = r *2-2; c < row *2-2; c++)
System.out.print(" ");
for (c = 1; c <= r; c ++)
System.out.print(q);
System.out.println();
}
}
}
Output : Enter rows : 5 Enter characters : * ********** **** **** *** *** ** ** * * * * ** ** *** *** **** **** **********
Explanation:
First outer for loop :
Iteration-1
r=1 (row) (passes the first for loop condition) as it will iterate up to r<=row times.
Then first inner for loop will print star “*” 5 time , because loop will execute r to c<=row times.
Then second for loop will print star 1 to r *2-2 time i.e., 0 times space will be printed .
Then third inner for loop will print star “*” 5 time , because loop will execute 1 to c<=r times.
**********
Iteration-2
r=2 (row) (passes the first for loop condition) as it will iterate up to r<=row times.
Then first inner for loop will print star “*” 4 time , because loop will execute r to c<=row times.
Then second for loop will print star 1 to r *2-2 time i.e., 2 times space will be printed .
Then third inner for loop will print star “*” 4 time , because loop will execute 1 to c<=r times.
**** ****
Iteration-3
r=3 (row) (passes the first for loop condition) as it will iterate up to r<=row times.
Then first inner for loop will print star “*” 3 time , because loop will execute r to c<=row times.
Then second for loop will print star 1 to r *2-2 time i.e., 4 times space will be printed .
Then third inner for loop will print star “*” 3 time , because loop will execute 1 to c<=r times.
*** ***
Iteration-4
r=4 (row) (passes the first for loop condition) as it will iterate up to r<=row times.
Then first inner for loop will print star “*” 2 time , because loop will execute r to c<=row times.
Then second for loop will print star 1 to r *2-2 time i.e., 6 times space will be printed .
Then third inner for loop will print star “*” 2 time , because loop will execute 1 to c<=r times.
** **
Iteration-5
r=5 (row) (passes the first for loop condition) as it will iterate up to r<=row times.
Then first inner for loop will print star “*” 1 time , because loop will execute r to c<=row times.
Then second for loop will print star 1 to r *2-2 time i.e., 8 times space will be printed .
Then third inner for loop will print star “*” 1 time , because loop will execute 1 to c<=r times.
* *
Now when r=6 , first outer for loop condition will fail so no other loops will be executed.
Second outer for loop :
Iteration-1
r=1 (passes the first for loop condition) as it will iterate up to r<=row times.
Then first inner for loop will print star “*” 1 time , because loop will execute 1 to c<=r times.
Then second for loop will print star r*2-2 to row*2-2 time i.e., 8 times space will be printed .
Then third inner for loop will print star “*” 1 time , because loop will execute 1 to c<=r times.
* *
Iteration-2
r=2 (passes the first for loop condition) as it will iterate up to r<=row times.
Then first inner for loop will print star “*” 2 time , because loop will execute 1 to c<=r times.
Then second for loop will print star r*2-2 to row*2-2 time i.e., 6 times space will be printed .
Then third inner for loop will print star “*” 2 time , because loop will execute 1 to c<=r times.
** **
Iteration-3
r=3 (passes the first for loop condition) as it will iterate up to r<=row times.
Then first inner for loop will print star “*” 3 time , because loop will execute 1 to c<=r times.
Then second for loop will print star r*2-2 to row*2-2 time i.e., 4 times space will be printed .
Then third inner for loop will print star “*” 3 time , because loop will execute 1 to c<=r times.
*** ***
Iteration-4
r=4 (passes the first for loop condition) as it will iterate up to r<=row times.
Then first inner for loop will print star “*” 4 time , because loop will execute 1 to c<=r times.
Then second for loop will print star r*2-2 to row*2-2 time i.e., 2 times space will be printed .
Then third inner for loop will print star “*” 4 time , because loop will execute 1 to c<=r times.
**** ****
Iteration -5
r=5 (passes the first for loop condition) as it will iterate up to r<=row times.
Then first inner for loop will print star “*” 5 time , because loop will execute 1 to c<=r times.
Then second for loop will print star r*2-2 to row*2-2 time i.e., 0 times space will be printed .
Then third inner for loop will print star “*” 5 time , because loop will execute 1 to c<=r times.
**********
Now when r=6, second outer for loop condition will fail so no other loops will be executed.
At last , we will see a pattern like this ,
********** **** **** *** *** ** ** * * * * ** ** *** *** **** **** **********
C Code:
#include <stdio.h>
int main() {
int r, row, c ,d;
printf("Enter rows: ");
scanf("%d", &row);
for (r =1; r<=row ; r++)
{
for (c= r; c <= row ; c++)
printf("*");
for (c = 1; c <= r*2-2; c++)
printf(" ");
for (c = r; c <= row ; c++)
printf("*");
printf("\n");
}
for (r = 1; r <= row ; r ++)
{
for (c = 1; c <= r; c++)
printf("*");
for (c = r *2-2; c < row *2-2; c++)
printf(" ");
for (c = 1; c <= r; c ++)
printf("*");
printf("\n");
}
return 0;
}
Output : Enter rows : 5 ********** **** **** *** *** ** ** * * * * ** ** *** *** **** **** **********
C++ Code:
#include <iostream>
using namespace std;
int main()
{
int row, r , c ,d ;
cout << "Enter rows: ";
cin >> row;
for (r =1; r<=row ; r++)
{
for (c= r; c <= row ; c++)
cout << "*";
for (c = 1; c <= r*2-2; c++)
cout << " ";
for (c = r; c <= row ; c++)
cout << "*";
cout << "\n";
}
for (r = 1; r <= row ; r ++)
{
for (c = 1; c <= r; c++)
cout << "*";
for (c = r *2-2; c < row *2-2; c++)
cout << " ";
for (c = 1; c <= r; c ++)
cout << "*";
cout << "\n";
}
return 0;
}
Output : Enter rows : 5 ********** **** **** *** *** ** ** * * * * ** ** *** *** **** **** **********
Related Java Star Pattern Programs: