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

【Java入門】中空の直角三角形の星形パターンを出力するプログラムの書き方

この記事では、Javaを使って中空の直角三角形の星形パターンを出力する方法を解説します。このパターンは、複数のforループとprint文を組み合わせることで作成できます。

出力される図形の特徴は以下のとおりです。

  • 1行目には星(*)を1つだけ出力する
  • 最終行には n 個の星をすべて並べて出力する
  • それ以外の行では、行頭と行末にのみ星を出力し、間は空白で埋める

実行例:入力と出力

入力

ユーザーから次のようなサイズを入力するとします。

Enter the size : 8

出力

期待される出力は次のとおりです。

中空の直角三角形 :
*
* *
*  *
*   *
*    *
*     *
********

アルゴリズム

プログラムの処理手順は以下のステップで構成されます。

ステップ1 - 開始
ステップ2 - 整数型変数 i、j、k、my_input を宣言する
ステップ3 - ユーザーから値を読み込む、または値を定義する
ステップ4 - 文字間の空白を扱うため、ネストした2つの for ループで繰り返し処理を行う
ステップ5 - 最内側のループの後、別の for ループで繰り返し、必要な文字を出力する
ステップ6 - 改行を出力し、次の行へ移る
ステップ7 - 結果を表示する
ステップ8 - 終了

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

この例では、Scannerクラスを使ってユーザーからの入力を受け付けます。キーボードで任意のサイズを指定して、動的にパターンを生成できます。

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

実行結果

Required packages have been imported
A reader object has been defined
Enter the size : 8
*
**
* *
*  *
*   *
*    *
*     *
********

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

この例では、整数値が事前に定義されており、その値をそのままコンソールに表示します。入力処理が不要なため、ロジックの確認やテストに便利です。

public class Hollowtangle{
    public static void main(String[] args){
        int my_input, i, j;
        my_input = 8;
        System.out.println("The size is defined as " +my_input);
        for( i=1;i<=my_input;i++){
            if(i==1 || i==my_input)
            for( j=1;j<=i;j++){
                System.out.print("*");
            } else {
                for( j=1;j<=i;j++){
                    if(j==1 || j==i)
                        System.out.print("*");
                    else
                        System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}

実行結果

The size is defined as 8
*
**
* *
*  *
*   *
*    *
*     *
********

コードのポイント

  • 外側のforループ: 行数(1〜my_input)を制御します。
  • 最初と最後の行: i==1 または i==my_input の場合は、すべての列に星を出力します。
  • 中間の行: 列位置が j==1(行頭)または j==i(行末)の場合のみ星を出力し、それ以外は空白を出力することで「中空」の形状を作ります。
  • 改行処理: 各行の出力後に System.out.println() を呼び出すことで、次の行へ移ります。

このように、二重ループと条件分岐を組み合わせるだけで、さまざまな星形パターンを自由に出力できます。ぜひサイズの値を変更して、動きを確認してみてください。

  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 * *)実行結果変