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

Javaでミラー下部星形三角パターンを出力する方法を解説

この記事では、Javaを使って「ミラー下部星形三角パターン(Mirror Lower Star Triangle Pattern)」をコンソールに出力する方法を詳しく解説します。このパターンは、複数のforループとprint文を組み合わせることで形成されます。プログラミング学習におけるネストしたループの理解に役立つ定番の演習問題です。

パターンのイメージ

まず、実際に出力されるパターンを確認してみましょう。

入力例:

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

出力例:

* * * * * * * *
 * * * * * * *
  * * * * * *
   * * * * *
    * * * *
     * * *
      * *
       *
       *
      * *
     * * *
    * * * *
   * * * * *
  * * * * * *
 * * * * * * *
* * * * * * * *

上記のように、星(*)が減少していき途中で1つになった後、今度は増加していく対称的な形状が特徴です。これが「ミラー(鏡合わせ)」パターンと呼ばれる理由です。

アルゴリズム

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

  1. 処理を開始する。
  2. 整数型の変数 i、j、k、my_input を宣言する。
  3. ユーザーから必要な値を読み込む、または値を直接定義する。
  4. 二重のforループを使って文字間の空白(スペース)を生成する。
  5. 最も内側のループの反復後、別のforループで目的の文字(*)を出力する。
  6. 改行を出力して、次の行へ移動する。
  7. 結果を表示する。
  8. 処理を終了する。

例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("リーダーオブジェクトが定義されました ");
      System.out.print("行数を入力してください : ");
      my_input = my_scanner.nextInt();
      System.out.println("ミラー下部星形三角パターン : ");
      for (i = 1; i <= my_input; i++) {
         for (j = 1; j < i; j++) {
            System.out.print(" ");
         }
         for (j = i; j <= my_input; j++) {
            System.out.print("*" + " ");
         }
         System.out.println();
      }
      for (i = my_input - 1; i >= 0; i--) {
         for (j = 0; j < i; j++) {
            System.out.print(" ");
         }
         for (j = i; j <= my_input - 1; j++) {
            System.out.print("*" + " ");
         }
         System.out.println();
      }
   }
}

出力結果

必要なパッケージがインポートされました
リーダーオブジェクトが定義されました 
行数を入力してください : 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 = 1; i <= my_input; i++) {
         for (j = 1; j < i; j++) {
            System.out.print(" ");
         }
         for (j = i; j <= my_input; j++) {
            System.out.print("*" + " ");
         }
         System.out.println();
      }
      for (i = my_input - 1; i >= 0; i--) {
         for (j = 0; j < i; j++) {
            System.out.print(" ");
         }
         for (j = i; j <= my_input - 1; j++) {
            System.out.print("*" + " ");
         }
         System.out.println();
      }
   }
}

出力結果

行数は 8 として定義されています
ミラー下部星形三角パターン : 
* * * * * * * *
 * * * * * * *
  * * * * * *
   * * * * *
    * * * *
     * * *
      * *
       *
       *
      * *
     * * *
    * * * *
   * * * * *
  * * * * * *
 * * * * * * *
* * * * * * * *

プログラムのポイント

このプログラムの核となるのは、前半のループ後半のループの2つの部分です。前半では、行が進むごとに空白を1つずつ増やしながら星の数を減らしていきます。後半ではその逆を行い、空白を減らしながら星の数を増やしていきます。この2つの処理を組み合わせることで、中央で折り返された鏡のような対称パターンが完成します。ネストしたループの動作を視覚的に理解したい方にとって、非常に良い練習題材と言えるでしょう。

  1. 【Java入門】三角形パターンをコンソールに出力する方法

    三角形パターンを表示するJavaプログラム 以下は、ユーザーが指定した行数に応じて、三角形のパターンをコンソールに出力するJavaプログラムです。 サンプルコード import java.util.*; public class Demo{ public static void main(String[] args){ Scanner my_scan = new Scanner(System.in); System.out.println(Enter the number of rows which needs to be printed);

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

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