不揃いな配列と表の整形
不揃いな2次元配列を扱い、列ごとの幅を使って揃った表を出力します。デモではScannerを使わずにサンプル行列を作成します。
「不揃いな配列と表の整形」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン2/6です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全6レッスンが含まれています。
ジャグ配列の概念
ジャグ配列: 行ごとに長さを変えられる2D配列です。行は個別に扱い、共通の列数を仮定しないでください。
ジャグ配列の作成
長さの異なる行を割り当ててジャグ配列を作成します。各行に必要な列数だけあればよい理由をメッセージで説明します。
public class Main {
public static void main(String[] args) {
// Create a jagged array with 3 rows of varying lengths
int[][] m = new int[3][];
// Row 0 has 2 columns
m[0] = new int[]{1, 2};
// Row 1 has 3 columns
m[1] = new int[]{3, 4, 5};
// Row 2 has 1 column
m[2] = new int[]{6};
// Print the jagged array
System.out.println("Jagged array contents:");
for (int r = 0; r < m.length; r++) {
for (int c = 0; c < m[r].length; c++) {
System.out.print(m[r][c] + " ");
}
System.out.println(); // new line after each row
}
}
}
安全な反復
各行でm[r].lengthを使うことで安全に反復できます。内側のループの長さは行ごとに異なる場合があります。
public class Main {
public static void main(String[] args) {
// Example jagged array
int[][] m = {
{1, 2},
{3, 4, 5},
{6}
};
// Safe nested loops for a jagged matrix
for (int r = 0; r < m.length; r = r + 1) {
// Always use the actual length of the current row
for (int c = 0; c < m[r].length; c = c + 1) {
int value = m[r][c]; // process the value
System.out.print(value + " ");
}
System.out.println(); // new line after each row
}
}
}
列幅
列を揃えて出力するには、すべての行を調べて、存在する各列の幅を計算します。
// Determine the maximum number of columns among all rows
int maxCols = 0;
for (int r = 0; r < m.length; r = r + 1) {
if (m[r].length > maxCols) maxCols = m[r].length;
}
// For each column, store the maximum string length of values in that column
int[] w = new int[maxCols];
for (int r = 0; r < m.length; r = r + 1) {
for (int c = 0; c < m[r].length; c = c + 1) {
int len = Integer.toString(m[r][c]).length();
if (len > w[c]) w[c] = len;
}
}位置を揃えた出力
各値の左側に空白を追加して列幅に合わせてから、行を1つの文字列として出力します。
// Print each row with left-padded columns
for (int r = 0; r < m.length; r = r + 1) {
String line = "";
for (int c = 0; c < m[r].length; c = c + 1) {
String s = Integer.toString(m[r][c]);
while (s.length() < w[c]) s = " " + s; // left pad with spaces
line = line + s + (c + 1 < m[r].length ? " " : "");
}
System.out.println(line);
}入力なしのデモ
実行してみましょう: このデモではコード内でジャグ行列を作成し、列幅を計算して、位置を揃えた表を出力します。入力は必要ありません。
public class Main {
// Compute per-column widths for a jagged matrix
static int[] colWidths(int[][] m) {
int maxCols = 0;
for (int r = 0; r < m.length; r = r + 1) {
if (m[r].length > maxCols) maxCols = m[r].length;
}
int[] w = new int[maxCols];
for (int r = 0; r < m.length; r = r + 1) {
for (int c = 0; c < m[r].length; c = c + 1) {
int len = Integer.toString(m[r][c]).length();
if (len > w[c]) w[c] = len;
}
}
// Ensure at least width 1 for each column
for (int c = 0; c < w.length; c = c + 1) {
if (w[c] < 1) w[c] = 1;
}
return w;
}
// Print the matrix with aligned columns
static void printTable(int[][] m) {
int[] w = colWidths(m);
for (int r = 0; r < m.length; r = r + 1) {
String line = "";
for (int c = 0; c < m[r].length; c = c + 1) {
String s = Integer.toString(m[r][c]);
while (s.length() < w[c]) s = " " + s;
line = line + s + (c + 1 < m[r].length ? " " : "");
}
System.out.println(line);
}
}
public static void main(String[] args) {
// Sample jagged matrix (no Scanner; values are hard-coded)
int[][] m = {
{1, 23, 456},
{7, 8},
{90, 12, 3, 4}
};
System.out.println("Aligned table:");
printTable(m);
}
}
ジャグ配列の反復確認
クイックチェック: ジャグ行列のすべての要素を安全に反復する入れ子のループはどれですか?
まとめと次のステップ
まとめ: ジャグ配列を作成し、行ごとの長さを使って安全に反復し、列幅を計算して、Scanner なしで位置を揃えた表を出力しました。
次のステップ: 行と列の最大値、行列の転置について学びます。
よくある質問
「不揃いな配列と表の整形」レッスンは無料ですか?
はい。「不揃いな配列と表の整形」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全6レッスンが含まれています。
「不揃いな配列と表の整形」で何を学びますか?
不揃いな2次元配列を扱い、列ごとの幅を使って揃った表を出力します。デモではScannerを使わずにサンプル行列を作成します。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/6です。
「不揃いな配列と表の整形」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 2次元配列の基礎とネストした反復処理
- 不揃いな配列と表の整形
- 行・列の最大値、転置、整形
- 2次元ミニプロジェクト:成績表
- ヘルパークラスとしての2次元ユーティリティ(リファクタリング)
- 2次元データのクリーニングと検証