- 締切済み
要素にnullが入った多次元配列の次元数(2回目)
同様の質問について再度投稿します。 以下、問題集で見掛けたプログラムの抜粋です。 String[][] Array = { {"Sunday", "Monday"}, null, {"Monday", "Tuesday"} }; int count =0; for (String[] A : array){ count += A.length; } System.out.println(count); このプログラムを実行すると、 要素nullのlengthが数えられないため、 NullPointerExceptionが発生する、ということです。 以前に質問した際には、 上記配列に含まれるnullは、大カッコで囲まれていないため、 次元としてカウントされないので、配列の次元数は 2次元となる、という回答を頂きました。 (配列変数も二次元で宣言されている。) 細かいようですが、大カッコで囲まれていないnullは 次元数としてカウントされなくても、要素として 拡張for文の対象にはなるのでしょうか…? 解説をお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- UmeRabbit
- ベストアンサー率37% (15/40)
拡張for文の対象になるかならないか、これはなります。 順番に紐解いていくと良いでしょう。 拡張for文の1週目は 変数Aには{"Sunday", "Monday"}を取り出し、代入されます。 lengthにより2が返され、countが0→2となります。 2周目は 変数AにはNullを取り出し、代入されます。 lengthの実行時にNullPointerExceptionが発生する。 となります。 これがもし、2個めの要素が{Null}だった場合の2周目は 変数Aには{Null}を取り出し、代入されます。 lengthではNullが1個入っている、と認識され1が返り、countが2→3となります。
- maiko0333
- ベストアンサー率19% (839/4401)
String[][] Array = { {"Sunday", "Monday"}, null, {"Monday", "Tuesday"} }; int count =0; for (String[] A : array){ count += A.length; System.out.println(A.length + " " + count); } System.out.println(count); 自分で確認してみましょう。