-PR-
締切済み

要素にnullが入った多次元配列の次元数(2回目)

  • 困ってます
  • 質問No.9280297
  • 閲覧数58
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

同様の質問について再度投稿します。
以下、問題集で見掛けたプログラムの抜粋です。

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
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.2
レベル7

ベストアンサー率 44% (8/18)

拡張for文の対象になるかならないか、これはなります。 順番に紐解いていくと良いでしょう。 拡張for文の1週目は 変数Aには{"Sunday", "Monday"}を取り出し、代入されます。 lengthにより2が返され、countが0→2となります。 2周目は 変数AにはNullを取り出し、代入されます。 lengthの実行時にNullPointerExce ...続きを読む
拡張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となります。
関連するQ&A


  • 回答No.1
レベル14

ベストアンサー率 19% (426/2185)

String[][] Array = { {"Sunday", "Monday"}, null, {"Monday", "Tuesday"} }; int count =0; for (String[] A : array){ count += A.length; System.out.println(A.length + ...続きを読む
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);

自分で確認してみましょう。
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ