【Java】逆三角形の星形パターンを出力するプログラムの作成方法
この記事では、Javaを使って逆さの星形パターン(逆三角形)をコンソールに出力する方法を解説します。複数のforループとprint文を組み合わせることで、上の行ほど長く、下の行ほど短くなる星のパターンを簡単に描くことができます。
まずは、実際の入出力イメージを見てみましょう。
入出力のイメージ
入力: サイズとして「8」を入力した場合
Enter the size : 8
出力:
The inverted star pattern
***************
*************
***********
*********
*******
*****
***
*
アルゴリズム
このプログラムは、以下の手順で動作します。
ステップ1:処理を開始する ステップ2:整数型の変数 i・j・k・my_input を宣言する ステップ3:ユーザーから値を入力してもらうか、あらかじめ値を定義しておく ステップ4:行頭の空白を生成するため、ネストしたforループで繰り返し処理を行う ステップ5:最も内側のループの後に別のforループを実行し、必要な数の「*」を出力する ステップ6:改行を出力して、次の行へ移動する ステップ7:結果を表示する ステップ8:処理を終了する
パターンの仕組み
- 外側のforループ: 行数を制御します。i の値が my_input から 1 まで1ずつ減少していきます。
- 1つ目の内側ループ: 「my_input - i」個の半角スペースを出力し、星を少しずつ右へずらします。
- 2つ目の内側ループ: 「(2 × i) − 1」個の「*」を出力します。これにより、各行の星の数は必ず奇数(15・13・11…)になります。
- 改行処理: 1行分の出力が終わるごとに改行することで、階段状のパターンが完成します。
例1:ユーザーからの入力を受け取る場合
Scannerクラスを使い、実行時にパターンのサイズを入力してもらう例です。オンラインの実行環境(コーディンググラウンドツール)でも、そのまま動作を確認できます。
import java.util.Scanner;
public class InvertedStar{
public static void main(String[] args){
int my_input, k, i, j;
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 size : ");
my_input = my_scanner.nextInt();
System.out.println("The inverted star pattern");
for ( i = my_input ; i >= 1; i-- ){
for ( j = 0 ; j < my_input - i; j++ ){
System.out.print(" ");
}
for ( k = 0 ; k != (2 * i) - 1; k++ ){
System.out.print("*");
}
System.out.println();
}
}
}
実行結果
Required packages have been imported
A reader object has been defined
Enter the size : 8
The inverted star pattern
***************
*************
***********
*********
*******
*****
***
*
例2:値をあらかじめ定義しておく場合
対話的な入力が不要なケースでは、変数に直接値を代入して実行することもできます。学習や動作確認の際に便利な方法です。
public class InvertedStar{
public static void main(String[] args){
int my_input, k, i, j;
my_input = 8;
System.out.println("The size is defined as " + my_input);
System.out.println("The inverted star pattern");
for ( i = my_input ; i >= 1; i-- ){
for ( j = 0 ; j < my_input - i; j++ ){
System.out.print(" ");
}
for ( k = 0 ; k != (2 * i) - 1; k++ ){
System.out.print("*");
}
System.out.println();
}
}
}
実行結果
The size is defined as 8
The inverted star pattern
***************
*************
***********
*********
*******
*****
***
*
my_input の値を変更すれば、好きな大きさの逆三角形を出力できます。ぜひさまざまな数値で試してみてください。
-
Javaで行列をZ字形に出力するプログラムの書き方
行列(マトリックス)を「Z」の字形に沿って出力するには、1行目を左から右へ → 右端から左下への対角要素 → 最終行を左から右へ の順に要素を表示していきます。本記事では、その処理を実現するJavaプログラムをサンプルコードとともに解説します。 サンプルコード import java.lang.*; import java.io.*; public class Demo{ public static void z_shape(int my_arr[][], int n){ int i = 0, j, k; // 1行目を左から右へ出力 f
-
Pythonで逆三角形の星形パターン(*)を出力するプログラム
Pythonで星(アスタリスク)のパターンを逆順、つまり逆三角形の形に出力したい場合、「for」ループを使用するのが最もシンプルな方法です。forループを使えば、指定した範囲の数値を順番に繰り返し処理しながら、必要な文字を必要な回数だけ出力できます。ポイントは、ループが1回回るごとにカウント値を減算していくことです。以下に具体的な実装例を示します。サンプルコードN=6 print(変数Nを + str(N) + に初期化しました) print(逆順の星形パターンを表示します) for i in range(N, 0, -1): print((N-i) * + i * *)実行結果変