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

【初心者向け】Javaでダイヤモンド型の星形パターンを出力する方法

はじめに

本記事では、Javaを使ってダイヤモンド型(ひし形)の星形パターンをコンソールに出力する方法を詳しく解説します。このパターンは、複数のforループとprint文を組み合わせて描画します。二重ループの動きを視覚的に確認できるため、Javaの基礎学習にも最適な題材です。

入出力のデモ

入力

まず、ユーザーに行数を入力してもらいます。ここでは例として「8」を入力します。

Enter the number of rows : 8

出力

上記の入力に対して、次のようなダイヤモンド型の星形パターンが出力されます。

The diamond star pattern :
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
  *************
   ***********
    *********
     *******
      *****
       ***
        *

アルゴリズム

処理の流れは以下の通りです。

Step 1 - 処理を開始する
Step 2 - 整数型変数 i、j、k、my_input を宣言する
Step 3 - ユーザーから必要な値を読み込む(または値をあらかじめ定義する)
Step 4 - 変数 k に「my_input - 1」の値を代入する
Step 5 - 二重のforループを回して、星の前に入る空白を出力する
Step 6 - 内側のループを抜けたら、別のforループで星(*)を出力する
Step 7 - 改行を出力し、次の行へ移る
Step 8 - 結果を表示する
Step 9 - 処理を終了する

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

この例では、Scannerクラスを使ってユーザーから行数を入力として受け取り、その値をもとにパターンを出力します。

import java.util.Scanner;
public class DiamondStar{
   public static void main(String args[]){
      int i, j, k, my_input;
      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 : ");
      my_input = my_scanner.nextInt();
      k = my_input - 1;
      System.out.println("The diamond star pattern : ");
      for (j = 1; j<= my_input; j++){
         for (i = 1; i<= k; i++){
            System.out.print(" ");
         }
         k--;
         for (i = 1; i <= 2 * j - 1; i++){
            System.out.print("*");
         }
         System.out.println("");
      }
      k = 1;
      for (j = 1; j<= my_input - 1; j++){
         for (i = 1; i<= k; i++){
            System.out.print(" ");
         }
         k++;
         for (i = 1; i<= 2 * (my_input - j) - 1; i++){
            System.out.print("*");
         }
         System.out.println("");
      }
   }
}

出力

Required packages have been imported
A reader object has been defined
Enter the number : 8
The diamond star pattern :
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
  *************
   ***********
    *********
     *******
      *****
       ***
        *

例2: 値を事前に定義しておく場合

この例では、行数があらかじめコード内で定義されており、その値を読み込んでパターンを出力します。入力処理が不要なため、ロジックの確認だけを行いたい場合に便利です。

public class DiamondStar{
   public static void main(String args[]){
      int i, j, k, my_input;
      my_input = 8;
      k = my_input - 1;
      System.out.println("The number of rows is defined as " +my_input);
      System.out.println("The diamond star pattern : ");
      for (j = 1; j<= my_input; j++){
         for (i = 1; i<= k; i++){
            System.out.print(" ");
         }
         k--;
         for (i = 1; i <= 2 * j - 1; i++){
            System.out.print("*");
         }
         System.out.println("");
      }
      k = 1;
      for (j = 1; j<= my_input - 1; j++){
         for (i = 1; i<= k; i++){
            System.out.print(" ");
         }
         k++;
         for (i = 1; i<= 2 * (my_input - j) - 1; i++){
            System.out.print("*");
         }
         System.out.println("");
      }
   }
}

出力

The number of rows is defined as 8
The diamond star pattern :
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
  *************
   ***********
    *********
     *******
      *****
       ***
        *

仕組みのポイント

ダイヤモンド型のパターンは、「上半分(ピラミッド)」と「下半分(逆ピラミッド)」の2つに分けて考えると理解しやすくなります。

  • 上半分: j行目ごとに、(my_input − j)個の空白を出力してから、(2 × j − 1)個の星を出力します。これにより星の数が1、3、5…と奇数で増えていきます。
  • 下半分: j行目ごとに、j個の空白を出力してから、(2 × (my_input − j) − 1)個の星を出力します。星の数が徐々に減少し、上下対称のひし形が完成します。

このように、空白と星の出力個数を制御することで、任意の行数のダイヤモンドパターンを自由に描画できます。

  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行目までの