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

【Java】ハーフダイヤモンド型の星パターンを出力するプログラムの作り方

この記事では、Javaを使ってハーフダイヤモンド(半分のダイヤモンド)型の星パターンを出力する方法を解説します。星(*)の数を増やしながら行を重ね、その後は逆に1つずつ減らしていくことで、ダイヤモンドの上半分のような模様を描きます。複数のforループと出力文を組み合わせるだけで実装できるため、ループ処理の練習題材としても最適です。

入力と出力の例

入力

ユーザーが次のように行数を入力したと仮定します。

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

出力

このとき、期待される出力は以下のとおりです。

ハーフダイヤモンドパターン :
*
**
***
****
*****
******
*******
********
*******
******
*****
****
***
**
*

アルゴリズム

ステップ1 - 処理を開始する
ステップ2 - 整数型の変数 i、j、my_input を宣言する
ステップ3 - ユーザーから行数を読み込む、または値をあらかじめ定義する
ステップ4 - 増加部分:外側のforループで行を制御し、内側のforループで「行番号 + 1」個の「*」を出力する
ステップ5 - 減少部分:別のforループで、行ごとに「*」の数を1個ずつ減らしながら出力する
ステップ6 - 各行の出力後に改行する
ステップ7 - 結果を表示する
ステップ8 - 処理を終了する

例1:ユーザーからの入力を受け取る場合

この例では、Scannerクラスを使ってユーザーから行数を入力してもらい、その値をもとにパターンを出力します。当サイトのオンライン実行環境でも、このコードをそのまま試すことができます。

import java.util.Scanner;
public class HalfDiamond{
   public static void main(String []args){
      int i, j, 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 = 0; i < my_input; i++){
         for (j = 0; j < i + 1; j++)
            System.out.print("*");
         System.out.print("\n");
      }
      // 下半分(減少)のパターンを出力
      for (i = 1; i < my_input; i++){
         for (j = i; j < my_input; j++)
            System.out.print("*");
         System.out.print("\n");
      }
   }
}

実行結果

必要なパッケージがインポートされました
読み取り用オブジェクトが定義されました
行数を入力してください : 8
ハーフダイヤモンドパターン :
*
**
***
****
*****
******
*******
********
*******
******
*****
****
***
**
*

例2:値をあらかじめ定義しておく場合

この例では、行数をプログラム内で直接定義しています。入力操作が不要なので、動作確認や学習時に手軽に利用できます。

public class HalfDiamond{
   public static void main(String []args){
      int i, j, my_input;
      my_input = 8;
      System.out.println("行数は " + my_input + " に設定されています");
      System.out.println("ハーフダイヤモンドパターン :");
      for (i = 0; i < my_input; i++){
         for (j = 0; j < i + 1; j++)
            System.out.print("*");
         System.out.print("\n");
      }
      for (i = 1; i < my_input; i++){
         for (j = i; j < my_input; j++)
            System.out.print("*");
         System.out.print("\n");
      }
   }
}

実行結果

行数は 8 に設定されています
ハーフダイヤモンドパターン :
*
**
***
****
*****
******
*******
********
*******
******
*****
****
***
**
*

プログラムの仕組み

最初の二重ループでは、外側の変数 i が 0 から my_input - 1 まで増加し、各行で i + 1 個の「*」を出力します。これにより、1個、2個、3個…と星が増えていく三角形が描かれます。

次の二重ループでは、i を 1 から my_input - 1 まで増加させながら、各行で my_input - i 個の「*」を出力します。これにより、星が1個ずつ減っていく逆三角形が描かれ、両者を組み合わせることで最大幅 my_input 個の星を持つハーフダイヤモンドが完成します。

  1. C言語で中空の長方形の星形パターン(*)を出力するプログラムの作り方

    本記事では、C言語においてforループを使って中空の長方形の星形(*)パターンを出力する方法を詳しく解説します。まず、以下の実行例を見てみましょう。入力例と出力例入力Enter number of rows: 5出力***** * * * * * * *****このように、外枠のみが星印(*)で描かれ、内部が空白になった中空の長方形が出力されます。アルゴリズムforループを使用して中空の長方形の星形パターンを出力するための手順は以下の通りです。ステップ1 − プログラムの実行時に行数を入力として受け取ります。ステップ2 − 外側のforループで、行を1からNまで繰り返し処理します。

  2. C言語でダイヤモンドパターンを出力するプログラム

    プログラムの概要 ダイヤモンドパターンは、正ピラミッドパターンと逆ピラミッドパターンを組み合わせたものです。上半分は数字が増えていくピラミッド形状、下半分はそれが逆さになった形状を出力することで、全体としてダイヤモンド(ひし形)が描かれます。 アルゴリズム このプログラムでは、1から始まる連続した数字を使ってダイヤモンド型のパターンを表示します。各行の出力内容は以下のとおりです。 1行目:1 を表示 2行目:1,2,3 を表示 3行目:1,2,3,4,5 を表示 4行目:1,2,3,4,5,6,7 を表示 5行目:1,2,3,4,5,6,7,8,9 を表示 6行目以降:5行目から4行目までの