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

Javaでピラミッド状の数字パターンを作成するプログラムの書き方

この記事では、Javaを使ってピラミッド状の数字パターンを作成する方法を解説します。パターンの出力には、複数のforループとprint文を組み合わせます。

入力と出力の例

まず、具体的な入力と出力のイメージを見てみましょう。

入力

行数として 8 を指定した場合

出力

ピラミッドパターン :
             1
           2 3 2
         3 4 5 4 3
        4 5 6 7 6 5 4
     5 6 7 8 9 8 7 6 5
   6 7 8 9 10 11 10 9 8 7 6
 7 8 9 10 11 12 13 12 11 10 9 8 7
8 9 10 11 12 13 14 15 14 13 12 11 10 9 8

このように、各行の中央で数字がピークに達し、左右対称に減少していく形が特徴です。

アルゴリズム

実装の流れは以下の通りです。

ステップ1 - 処理を開始する
ステップ2 - my_input、k、i、my_count、my_temp、my_spaces の6つの整数変数を宣言する
ステップ3 - ユーザーから必要な値を読み込む(または値を定義する)
ステップ4 - k、my_count、my_temp に 0 を代入する
ステップ5 - 文字間の空白を作るために、二重の for ループで反復処理を行う
ステップ6 - 最内側のループの後に、もう一つの for ループで反復処理を行い、(i + k - 2 * my_temp) の値を出力する
ステップ7 - 改行を出力し、次の行へ移る
ステップ8 - 結果を表示する
ステップ9 - 処理を終了する

サンプルコード1:ユーザーからの入力を受け取る場合

この例では、Scannerを使ってユーザーから行数を入力してもらい、その値をもとにピラミッドパターンを生成します。オンラインの実行環境でも手軽に試すことができます。

import java.util.Scanner;
public class Pyramid {
   public static void main(String[] args) {
      int my_input, k, i, my_count, my_temp, my_spaces;
      my_input = 8;
      k = 0;
      my_count = 0;
      my_temp = 0;
      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 number of rows: ");
      my_input = my_scanner.nextInt();
      System.out.println("The pyramid pattern : ");
      for ( i = 1; i <= my_input; ++i) {
         for (my_spaces = 1; my_spaces <= my_input - i; ++my_spaces) {
            System.out.print(" ");
            ++my_count;
         }
         while (k != 2 * i - 1) {
            if (my_count <= my_input - 1) {
               System.out.print((i + k) + " ");
               ++my_count;
             } else {
                 ++my_temp;
                 System.out.print((i + k - 2 * my_temp) + " ");
             }
             ++k;
          }
          my_temp = my_count = k = 0;
          System.out.println();
     }
   }
}

実行結果

Required packages have been imported
A reader object has been defined
Enter the number of rows: 8
The pyramid pattern :
             1
           2 3 2
         3 4 5 4 3
        4 5 6 7 6 5 4
      5 6 7 8 9 8 7 6 5
    6 7 8 9 10 11 10 9 8 7 6
  7 8 9 10 11 12 13 12 11 10 9 8 7
8 9 10 11 12 13 14 15 14 13 12 11 10 9 8

サンプルコード2:行数をあらかじめ定義しておく場合

この例では、行数となる整数値を事前にコード内で定義し、その値を使ってパターンをコンソールに出力します。入力処理が不要なため、ロジックの確認に便利です。

public class Pyramid {
   public static void main(String[] args) {
   int my_input, k, i, my_count, my_temp, my_spaces;
      my_input = 8;
      k = 0;
      my_count = 0;
      my_temp = 0;
      System.out.println("The number of rows is defined as " +my_input);
      System.out.println("The pyramid pattern : ");
      for ( i = 1; i <= my_input; ++i) {
         for (my_spaces = 1; my_spaces <= my_input - i; ++my_spaces) {
            System.out.print(" ");
            ++my_count;
         }
         while (k != 2 * i - 1) {
            if (my_count <= my_input - 1) {
               System.out.print((i + k) + " ");
               ++my_count;
            } else {
               ++my_temp;
               System.out.print((i + k - 2 * my_temp) + " ");
            }
            ++k;
          }
          my_temp = my_count = k = 0;
          System.out.println();
      }
   }
}

実行結果

The number of rows is defined as 8
The pyramid pattern :
                  1
                2 3 2
             3 4 5 4 3
           4 5 6 7 6 5 4
         5 6 7 8 9 8 7 6 5
     6 7 8 9 10 11 10 9 8 7 6
  7 8 9 10 11 12 13 12 11 10 9 8 7
8 9 10 11 12 13 14 15 14 13 12 11 10 9 8

まとめ

ピラミッドパターンの生成では、「左側の空白の制御」「増加する数字の出力」「減少する数字の出力」の3つの要素を組み合わせることがポイントです。ネストしたループとカウンター変数を活用することで、任意の行数に対応した対称的なパターンを簡単に出力できます。ぜひ行数を変更しながら、動作を確認してみてください。

  1. C++で中空ピラミッドとダイヤモンドパターンを出力するプログラムの作り方

    この記事では、C++を使って中空(ホロー)のピラミッドとダイヤモンドのパターンを生成する方法を解説します。塗りつぶし(ソリッド)のピラミッドパターンは比較的簡単に作成できますが、中空にするにはいくつかの工夫が必要です。ポイントは、ループと条件分岐を組み合わせて「星を出す位置」と「空白を入れる位置」を制御することです。 中空ピラミッドの出力 ピラミッドでは、1行目に星(*)を1つだけ出力し、最終行にはn個の星を連続して出力します。それ以外の行では、行頭と行末にちょうど2つの星を出力し、その間は空白で埋めます。これにより、輪郭だけの中空ピラミッドが完成します。 サンプルコード #include &

  2. Javaで商と剰余(余り)を計算するプログラムの書き方

    この記事では、Javaで商(クォーシェント)と剰余(リメインダー)を計算する方法をわかりやすく解説します。商と剰余は、次の2つのシンプルな式で求めることができます。商 = 被除数 ÷ 除数剰余 = 被除数 % 除数(%は剰余演算子)商と剰余の数学的な定義整数 a と 0 以外の整数 d が与えられたとき、a = qd + r かつ 0 ≤ r < |d| を満たす整数 q と r の組み合わせは必ず一意に存在することが証明されています。このとき、q を商、r を剰余(余り)と呼びます。以下に具体的なイメージを示します。入力例今回の入力は次のとおりです。被除数の値: 50 除数: 3出力例期待さ