【Java入門】X型の星(スター)パターンを出力するプログラムの書き方
この記事では、Javaを使ってX型の星(スター)パターンをコンソールに出力する方法を解説します。パターンの描画には、複数の for ループと print 文を組み合わせます。
実行例
まずは、実際の入力と出力のイメージを見てみましょう。
入力
ユーザーが次の数値を入力したとします。
Enter the number : 8
出力
プログラムを実行すると、次のようなX字型のパターンが表示されます。
The X star pattern :
X X
X X
X X
X X
X X
X X
X X
X
X X
X X
X X
X X
X X
X X
X X
アルゴリズム
X型パターンを出力する処理の流れは、以下の手順になります。
Step 1 - 処理を開始する Step 2 - 整数型の変数 i、j、k、my_input を宣言する Step 3 - ユーザーから値を読み込む、または値を事前に定義する Step 4 - 「my_input × 2 − 1」の計算結果を変数 k に代入する Step 5 - 二重の for ループを使って行・列を走査し、文字間の空白を調整する Step 6 - 条件(j == i または j == k - i + 1)が成立する位置に文字「X」を出力する Step 7 - 内側のループが終わるごとに改行し、次の行へ移る Step 8 - 結果を表示する Step 9 - 処理を終了する
ポイントは、対角線上にあたる位置(j == i または j == k - i + 1)だけ「X」を出力し、それ以外は空白を出力することです。これにより、左上から右下、および右上から左下への2本の斜め線が描かれ、全体としてX字型になります。
例1:ユーザーからの入力を受け取る場合
この例では、Scanner クラスを使ってユーザーからの入力を受け付けます。オンラインコンパイラなどのツールでも実際に動作を確認できます。
import java.util.Scanner;
public class XStar{
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();
System.out.print("The X star pattern : ");
k = my_input * 2 - 1;
for(i = 1; i <= k; i++){
for(j = 1; j <= k; j++){
if(j == i || j == k - i + 1)
System.out.print("X");
else
System.out.print(" ");
}
System.out.println();
}
}
}
出力
Required packages have been imported
A reader object has been defined
Enter the number : 8
The X star pattern :
X X
X X
X X
X X
X X
X X
X X
X
X X
X X
X X
X X
X X
X X
X X
例2:値を事前に定義する場合
この例では、行数となる整数値があらかじめコード内で定義されており、その値を使ってそのままパターンを出力します。入力処理が不要になるため、ロジックの確認に便利です。
public class XStar{
public static void main(String []args){
int i, j, k, my_input;
my_input = 8;
System.out.println("The number of rows is defined as " + my_input);
System.out.print("The X star pattern : ");
k = my_input * 2 - 1;
for(i = 1; i <= k; i++){
for(j = 1; j <= k; j++){
if(j == i || j == k - i + 1)
System.out.print("X");
else
System.out.print(" ");
}
System.out.println();
}
}
}
出力
The number of rows is defined as 8
The X star pattern :
X X
X X
X X
X X
X X
X X
X X
X
X X
X X
X X
X X
X X
X X
X X
まとめ
X型の星パターンは、「行番号と列番号が一致する位置」「行番号と列番号の合計が一定になる位置」という2つの条件を組み合わせることで簡単に描画できます。k = my_input × 2 − 1 で正方形の一辺の長さを求め、二重ループで各マスを判定しながら出力するのが基本の考え方です。ぜひ入力値を変更して、さまざまなサイズのパターン生成を試してみてください。
-
Javaで行列をZ字形に出力するプログラムの書き方
行列(マトリックス)を「Z」の字形に沿って出力するには、1行目を左から右へ → 右端から左下への対角要素 → 最終行を左から右へ の順に要素を表示していきます。本記事では、その処理を実現するJavaプログラムをサンプルコードとともに解説します。 サンプルコード import java.lang.*; import java.io.*; public class Demo{ public static void z_shape(int my_arr[][], int n){ int i = 0, j, k; // 1行目を左から右へ出力 f
-
Pythonで逆三角形の星形パターン(*)を出力するプログラム
Pythonで星(アスタリスク)のパターンを逆順、つまり逆三角形の形に出力したい場合、「for」ループを使用するのが最もシンプルな方法です。forループを使えば、指定した範囲の数値を順番に繰り返し処理しながら、必要な文字を必要な回数だけ出力できます。ポイントは、ループが1回回るごとにカウント値を減算していくことです。以下に具体的な実装例を示します。サンプルコードN=6 print(変数Nを + str(N) + に初期化しました) print(逆順の星形パターンを表示します) for i in range(N, 0, -1): print((N-i) * + i * *)実行結果変