【初心者向け】Javaでダイヤモンド型の星形パターンを出力する方法
はじめに
本記事では、Javaを使ってダイヤモンド型(ひし形)の星形パターンをコンソールに出力する方法を詳しく解説します。このパターンは、複数のforループとprint文を組み合わせて描画します。二重ループの動きを視覚的に確認できるため、Javaの基礎学習にも最適な題材です。
入出力のデモ
入力
まず、ユーザーに行数を入力してもらいます。ここでは例として「8」を入力します。
Enter the number of rows : 8
出力
上記の入力に対して、次のようなダイヤモンド型の星形パターンが出力されます。
The diamond star pattern :
*
***
*****
*******
*********
***********
*************
***************
*************
***********
*********
*******
*****
***
*アルゴリズム
処理の流れは以下の通りです。
Step 1 - 処理を開始する Step 2 - 整数型変数 i、j、k、my_input を宣言する Step 3 - ユーザーから必要な値を読み込む(または値をあらかじめ定義する) Step 4 - 変数 k に「my_input - 1」の値を代入する Step 5 - 二重のforループを回して、星の前に入る空白を出力する Step 6 - 内側のループを抜けたら、別のforループで星(*)を出力する Step 7 - 改行を出力し、次の行へ移る Step 8 - 結果を表示する Step 9 - 処理を終了する
例1: ユーザーからの入力を受け付ける場合
この例では、Scannerクラスを使ってユーザーから行数を入力として受け取り、その値をもとにパターンを出力します。
import java.util.Scanner;
public class DiamondStar{
public static void main(String args[]){
int i, j, k, my_input;
System.out.println("Required packages have been imported");
Scanner my_scanner = new Scanner(System.in);
System.out.println("A reader object has been defined ");
System.out.print("Enter the number : ");
my_input = my_scanner.nextInt();
k = my_input - 1;
System.out.println("The diamond star pattern : ");
for (j = 1; j<= my_input; j++){
for (i = 1; i<= k; i++){
System.out.print(" ");
}
k--;
for (i = 1; i <= 2 * j - 1; i++){
System.out.print("*");
}
System.out.println("");
}
k = 1;
for (j = 1; j<= my_input - 1; j++){
for (i = 1; i<= k; i++){
System.out.print(" ");
}
k++;
for (i = 1; i<= 2 * (my_input - j) - 1; i++){
System.out.print("*");
}
System.out.println("");
}
}
}出力
Required packages have been imported
A reader object has been defined
Enter the number : 8
The diamond star pattern :
*
***
*****
*******
*********
***********
*************
***************
*************
***********
*********
*******
*****
***
*例2: 値を事前に定義しておく場合
この例では、行数があらかじめコード内で定義されており、その値を読み込んでパターンを出力します。入力処理が不要なため、ロジックの確認だけを行いたい場合に便利です。
public class DiamondStar{
public static void main(String args[]){
int i, j, k, my_input;
my_input = 8;
k = my_input - 1;
System.out.println("The number of rows is defined as " +my_input);
System.out.println("The diamond star pattern : ");
for (j = 1; j<= my_input; j++){
for (i = 1; i<= k; i++){
System.out.print(" ");
}
k--;
for (i = 1; i <= 2 * j - 1; i++){
System.out.print("*");
}
System.out.println("");
}
k = 1;
for (j = 1; j<= my_input - 1; j++){
for (i = 1; i<= k; i++){
System.out.print(" ");
}
k++;
for (i = 1; i<= 2 * (my_input - j) - 1; i++){
System.out.print("*");
}
System.out.println("");
}
}
}出力
The number of rows is defined as 8
The diamond star pattern :
*
***
*****
*******
*********
***********
*************
***************
*************
***********
*********
*******
*****
***
*仕組みのポイント
ダイヤモンド型のパターンは、「上半分(ピラミッド)」と「下半分(逆ピラミッド)」の2つに分けて考えると理解しやすくなります。
- 上半分: j行目ごとに、(my_input − j)個の空白を出力してから、(2 × j − 1)個の星を出力します。これにより星の数が1、3、5…と奇数で増えていきます。
- 下半分: j行目ごとに、j個の空白を出力してから、(2 × (my_input − j) − 1)個の星を出力します。星の数が徐々に減少し、上下対称のひし形が完成します。
このように、空白と星の出力個数を制御することで、任意の行数のダイヤモンドパターンを自由に描画できます。
-
C言語で中空の長方形の星形パターン(*)を出力するプログラムの作り方
本記事では、C言語においてforループを使って中空の長方形の星形(*)パターンを出力する方法を詳しく解説します。まず、以下の実行例を見てみましょう。入力例と出力例入力Enter number of rows: 5出力***** * * * * * * *****このように、外枠のみが星印(*)で描かれ、内部が空白になった中空の長方形が出力されます。アルゴリズムforループを使用して中空の長方形の星形パターンを出力するための手順は以下の通りです。ステップ1 − プログラムの実行時に行数を入力として受け取ります。ステップ2 − 外側のforループで、行を1からNまで繰り返し処理します。
-
C言語でダイヤモンドパターンを出力するプログラム
プログラムの概要 ダイヤモンドパターンは、正ピラミッドパターンと逆ピラミッドパターンを組み合わせたものです。上半分は数字が増えていくピラミッド形状、下半分はそれが逆さになった形状を出力することで、全体としてダイヤモンド(ひし形)が描かれます。 アルゴリズム このプログラムでは、1から始まる連続した数字を使ってダイヤモンド型のパターンを表示します。各行の出力内容は以下のとおりです。 1行目:1 を表示 2行目:1,2,3 を表示 3行目:1,2,3,4,5 を表示 4行目:1,2,3,4,5,6,7 を表示 5行目:1,2,3,4,5,6,7,8,9 を表示 6行目以降:5行目から4行目までの