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

Javaでミラー上部の星形三角形パターンを出力するプログラムの作り方

この記事では、Javaを使ってミラー上部の星形三角形パターン(Mirror Upper Star Triangle Pattern)をコンソールに出力する方法を詳しく解説します。このパターンは、複数の for ループと出力ステートメントを組み合わせることで描画できます。

パターンの完成イメージ

例として、行数として「8」を入力した場合の実行結果は次のようになります。

入力:

行数を入力してください : 8

出力:

ミラー上部の星形パターン:
********
 *******
  ******
   *****
    ****
     ***
      **
       *

上の行ほど星が多く、下に行くにつれて星が1つずつ減り、代わりに左側の空白が1つずつ増えていくのが特徴です。

アルゴリズム

このパターンを出力する手順は以下の通りです。

  1. 処理を開始します。
  2. 整数型の変数 ijkmy_input を宣言します。
  3. ユーザーから行数を読み込むか、あらかじめ値を定義します。
  4. 外側の for ループの中で、行頭に挿入する空白を出力するための内側のループを回します。
  5. 続いて、別の for ループでその行に表示する星(*)を出力します。
  6. 1行分の出力が終わったら改行し、次の行へ移ります。
  7. 結果を表示します。
  8. 処理を終了します。

ロジックのポイント

  • 外側のループ: 行数から1ずつ減らしながら、各行の星の数を制御します。
  • 1つ目の内側のループ: 左側に入れる空白の数を担当します。行が下がるほど空白が増えます。
  • 2つ目の内側のループ: その行に表示する星(*)を順に出力します。

なお、行数を n とした場合、二重ループで全行を描画するため計算量は O(n²) となります。

例1:ユーザー入力を行数として使う場合

ここでは Scanner クラスを使って、ユーザーがコンソールから入力した値を行数として利用します。

import java.util.Scanner;
public class MirrorTriangle {
   public static void main(String args[]) {
      int i, j, k, my_input;
      System.out.println("必要なパッケージをインポートしました");
      Scanner my_scanner = new Scanner(System.in);
      System.out.println("Scannerオブジェクトを作成しました");
      System.out.print("行数を入力してください : ");
      my_input = my_scanner.nextInt();
      System.out.println("ミラー上部の星形パターン:");
      for (i = my_input; i >= 1; i--) {
         for (j = my_input; j > i; j--) {
            System.out.print(" ");
         }
         for (k = 1; k <= i; k++) {
            System.out.print("*");
         }
         System.out.println("");
      }
   }
}

実行結果:

必要なパッケージをインポートしました
Scannerオブジェクトを作成しました
行数を入力してください : 8
ミラー上部の星形パターン:
********
 *******
  ******
   *****
    ****
     ***
      **
       *

例2:行数をあらかじめ固定しておく場合

次の例では、行数をプログラム内で直接定義しています。入力操作が不要なため、ロジックの動作確認や学習用に手軽に試せます。

public class MirrorTriangle {
   public static void main(String args[]) {
      int i, j, k, my_input;
      my_input = 8;
      System.out.println("行数は " + my_input + " に設定されています");
      System.out.println("ミラー上部の星形パターン:");
      for (i = my_input; i >= 1; i--) {
         for (j = my_input; j > i; j--) {
            System.out.print(" ");
         }
         for (k = 1; k <= i; k++) {
            System.out.print("*");
         }
         System.out.println("");
      }
   }
}

実行結果:

行数は 8 に設定されています
ミラー上部の星形パターン:
********
 *******
  ******
   *****
    ****
     ***
      **
       *

まとめ

ミラー上部の星形三角形パターンは、「空白を出力するループ」と「星を出力するループ」を組み合わせるだけで簡単に実装できます。my_input の値を変更すれば、任意のサイズのパターンに対応できるので、ぜひいろいろな行数で試してみてください。

  1. 指定した整数の正方形パターンを出力するJavaプログラム

    指定された整数に基づいて正方形パターンを出力したい場合、以下のようなJavaコードを実装できます。 サンプルコード import java.util.*; import java.lang.*; public class Demo{ public static void main(String[] args){ Scanner my_scan = new Scanner(System.in); System.out.println(Enter a range); int my_num = my_scan.nextInt();

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

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