【はじめてのJava】配列 ~復習問題~
はじめてのJava
このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。
配列 ~復習問題~
プログラミング内で、同じデータ型の値をまとめて格納し扱う際に使用する「配列」について、JavaSilverにおいてよく狙われるポイントを解説していきます。
今回は、これまで配列を生成し、繰り返し処理を行う復習問題を扱います。
目次
配列のおさらい
配列とは、同じデータ型の値を要素としてまとめて格納することはできる入れ物のことでした。
配列は、大まかに2つの種類に分類ができました。
(1)同じ型のデータが1次元的に並んだ1次元配列 記事はこちら
(2)2つ以上のインデックスで管理する多次元配列 記事はこちら
それぞれの配列の生成方法、初期化の方法は各記事に記載してあります。
そして、配列に格納した値を実際にプログラムとして使用する例として
lengthを用いたfor文や拡張for文での使用例を説明・確認してきました。 記事はこちら
問題
それでは、さっそく問題を解いてみましょう!
次のプログラムをコンパイル・実行したときの結果として、正しいものを選びなさい。
public class Sample2{ public static void main(String[] main) { String array[][] = { { "A", "B" }, { "C", "D" }, { "E", "F" } }; array [1][1] = "X"; for (String[] Str1 : array) { for (String Str2 : Str1) { System.out.print(Str2); } } } }
A. 「ABCDEF」と表示される。
B. 「ABCXEF」と表示される。
C. 「XBCDEF」と表示される。
D. 「X」と表示される。
E. 実行時に例外がスローされる。
F. コンパイルエラーが発生する。
解答
解答 B
>java Sample2
ABCXEF
今回の問題を解く上で注意すべきポイントは、2点です!
[1]多次元配列の中の要素を指定の場所[2]拡張for文の記述内容の読み取り
これら2点に注目し、設問を見ていきましょう!
今回の問題では、
(1)二次元配列「array」を宣言と生成して要素を格納 (3行目)
(2)生成した配列に値を再代入 (4行目)
(3)二重の拡張for文により、要素を取り出し出力 (6~8行目)
という流れでプログラムが記述されています。
まず(1)終了段階での、配列arrayは下記の図の通りです。
array [0][0] = ”A”
array [0][1] = ”B”
array [1][0] = ”C”
array [1][1] = ”D”
array [2][0] = ”E”
array [2][1] = ”F”
それぞれ、要素の格納場所はこのようになっています。
次に(2)終了段階での、array [1][1]にXを再代入した配列arrayは下記の図の通りです。
先ほどは、Dが格納されていたarray [1][1]にXが代入されています。
最後に、(3)によって要素が1つずつ出力され表示されます。
拡張for文の基本的な書式は、
for (変数宣言 : 参照変数名){ 繰り返し処理; }
でありました。
for (String[] Str1 : array) { for (String Str2 : Str1) { System.out.print(Str2); } }
したがって今回のプログラムは、まず配列Arrayを参照した各要素を、変数Str1として1次元配列に格納しています。次に、その変数Str1を参照し各要素を取り出し変数Str2とし、出力表示しています。
結果として、
array [0][0] = ”A”
array [0][1] = ”B”
array [1][0] = ”C”
array [1][1] = ”X”
array [2][0] = ”E”
array [2][1] = ”F”
が順に表示されるため、解答はB. 「ABCXEF」と表示される。となります!
次回の内容
今回は配列の復習問題を扱いました。
配列は、複数の要素を一度に使用できる点が、非常に使い勝手のよいプログラムです。
次回は、関連する項目としてコマンドライン引数を学びます!
はじめてのJavaシリーズの記事一覧はこちら
シリーズ全記事一覧
環境構築編
プログラムの作り方編
データ型と変数編
演算子編