【Java】ハーフダイヤモンド型の星パターンを出力するプログラムの作り方
この記事では、Javaを使ってハーフダイヤモンド(半分のダイヤモンド)型の星パターンを出力する方法を解説します。星(*)の数を増やしながら行を重ね、その後は逆に1つずつ減らしていくことで、ダイヤモンドの上半分のような模様を描きます。複数のforループと出力文を組み合わせるだけで実装できるため、ループ処理の練習題材としても最適です。
入力と出力の例
入力
ユーザーが次のように行数を入力したと仮定します。
行数を入力してください : 8
出力
このとき、期待される出力は以下のとおりです。
ハーフダイヤモンドパターン : * ** *** **** ***** ****** ******* ******** ******* ****** ***** **** *** ** *
アルゴリズム
ステップ1 - 処理を開始する ステップ2 - 整数型の変数 i、j、my_input を宣言する ステップ3 - ユーザーから行数を読み込む、または値をあらかじめ定義する ステップ4 - 増加部分:外側のforループで行を制御し、内側のforループで「行番号 + 1」個の「*」を出力する ステップ5 - 減少部分:別のforループで、行ごとに「*」の数を1個ずつ減らしながら出力する ステップ6 - 各行の出力後に改行する ステップ7 - 結果を表示する ステップ8 - 処理を終了する
例1:ユーザーからの入力を受け取る場合
この例では、Scannerクラスを使ってユーザーから行数を入力してもらい、その値をもとにパターンを出力します。当サイトのオンライン実行環境でも、このコードをそのまま試すことができます。
import java.util.Scanner;
public class HalfDiamond{
public static void main(String []args){
int i, j, my_input;
System.out.println("必要なパッケージがインポートされました");
Scanner my_scanner = new Scanner(System.in);
System.out.println("読み取り用オブジェクトが定義されました");
System.out.print("行数を入力してください : ");
my_input = my_scanner.nextInt();
System.out.println("ハーフダイヤモンドパターン :");
// 上半分(増加)のパターンを出力
for (i = 0; i < my_input; i++){
for (j = 0; j < i + 1; j++)
System.out.print("*");
System.out.print("\n");
}
// 下半分(減少)のパターンを出力
for (i = 1; i < my_input; i++){
for (j = i; j < my_input; j++)
System.out.print("*");
System.out.print("\n");
}
}
}
実行結果
必要なパッケージがインポートされました 読み取り用オブジェクトが定義されました 行数を入力してください : 8 ハーフダイヤモンドパターン : * ** *** **** ***** ****** ******* ******** ******* ****** ***** **** *** ** *
例2:値をあらかじめ定義しておく場合
この例では、行数をプログラム内で直接定義しています。入力操作が不要なので、動作確認や学習時に手軽に利用できます。
public class HalfDiamond{
public static void main(String []args){
int i, j, my_input;
my_input = 8;
System.out.println("行数は " + my_input + " に設定されています");
System.out.println("ハーフダイヤモンドパターン :");
for (i = 0; i < my_input; i++){
for (j = 0; j < i + 1; j++)
System.out.print("*");
System.out.print("\n");
}
for (i = 1; i < my_input; i++){
for (j = i; j < my_input; j++)
System.out.print("*");
System.out.print("\n");
}
}
}
実行結果
行数は 8 に設定されています ハーフダイヤモンドパターン : * ** *** **** ***** ****** ******* ******** ******* ****** ***** **** *** ** *
プログラムの仕組み
最初の二重ループでは、外側の変数 i が 0 から my_input - 1 まで増加し、各行で i + 1 個の「*」を出力します。これにより、1個、2個、3個…と星が増えていく三角形が描かれます。
次の二重ループでは、i を 1 から my_input - 1 まで増加させながら、各行で my_input - i 個の「*」を出力します。これにより、星が1個ずつ減っていく逆三角形が描かれ、両者を組み合わせることで最大幅 my_input 個の星を持つハーフダイヤモンドが完成します。
-
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行目までの