今日は2次元配列に関する問題を解いてみましょう。
問題
次のプログラムを実行した場合の出力は何になるでしょうか?正しい選択肢を選んでください。
public class ArrayTest {
public static void main(String[] args) {
int[][] matrix = new int[2][3];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
matrix[i][j] = i + j;
}
}
System.out.println(matrix[1][2]);
}
}
選択肢
- A. 2
- B. 3
- C. 4
- D. コンパイルエラー
答えと解説
回答を見る
答え
C. 4
解説
今回のポイント:
- 2次元配列の使い方とインデックス操作
- forループを使った配列の初期化の仕組み
まず、2次元配列とは配列の中に配列が格納されている構造です。今回は「int[][]」の形で宣言されており、2行3列の行列を考えることができます。
インデックスは0から始まるため、行は0と1、列は0、1、2になります。
次に、forループで「matrix[i][j] = i + j」の処理を行っています。
この処理で行列の各要素にi+jの値が設定されます。
matrix[1][2]では、i=1でj=2のとき、1+2=3となり、「matrix[1][2]」には4が格納されるため、最後の出力は「4」となります。
基本説明
2次元配列は、他言語でもよく使用される構造であり、特に行列計算やゲームの盤面などで利用されます。
この配列でのインデックスには注意が必要で、Javaではデフォルトで0からスタートします。
誤答理由
AやBを選んだ場合の理由は、配列要素のインデックスを間違えたことや、i+jの計算結果を誤解していることが考えられます。
つまずきポイント
2次元配列のインデックスや添字の誤解は、初学者がしばしば陥るポイントです。
ループの中での計算式や初期化の仕組みをきちんと理解することが重要です。
発展知識
Javaでは、配列に対する操作はオートボックス化やラムダ式との連携によってさらに 発展的に使いこなすことができます。
例えば、Stream API を用いて配列操作をより簡潔に記述することができます。