Java
 Computer >> コンピューター >  >> プログラミング >> Java

【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 の値を変更すれば、好きな大きさの逆三角形を出力できます。ぜひさまざまな数値で試してみてください。

  1. 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

  2. Pythonで逆三角形の星形パターン(*)を出力するプログラム

    Pythonで星(アスタリスク)のパターンを逆順、つまり逆三角形の形に出力したい場合、「for」ループを使用するのが最もシンプルな方法です。forループを使えば、指定した範囲の数値を順番に繰り返し処理しながら、必要な文字を必要な回数だけ出力できます。ポイントは、ループが1回回るごとにカウント値を減算していくことです。以下に具体的な実装例を示します。サンプルコードN=6 print(変数Nを + str(N) + に初期化しました) print(逆順の星形パターンを表示します) for i in range(N, 0, -1): print((N-i) * + i * *)実行結果変