問題J02102の解答例と解説 Java Lv.3

ArrayList<String> 特定の文字列の出現回数(15分)


<解答例 1>
F11キーでフルスクリーンモード、Escキーで元に戻ります。

for 文をシンプルに使った例。19行目で文字列の比較は String クラスの equals メソッドを使うよ。


<解答例 2> 不正解
F11キーでフルスクリーンモード、Escキーで元に戻ります。

11 行目で == を使って比較するのが良くないよ。== だと同じString オブジェクトかどうかを評価するんだ。

この問題の ArrayList に入れる文字列は、以下のように String オブジェクトを new しているんだ。だから、ArrayList の中に格納されている String オブジェクトはみんな違うオブジェクトで、解答例2の11行目のif文で比較している "Michael" という文字列もオブジェクトなんだけど、これとも違うオブジェクトだから、== は常に false を返すんだ。


これがもし、new せずに、以下のように文字列を格納している場合、11行目の == は true が返ってしまうよ。new しない String オブジェクトはプログラムの中で1つの定数としての String オブジェクトになってしまい、== でオブジェクトを比較すると、同じオブジェクトだから true が返ってしまうんだ。


説明が長くなったけど、文字列の比較はいつも equals を使うようにすればいいよ。オブジェクトや new などの詳細については、インターネットや教科書などで調べてみよう。


<解答例 3>
F11キーでフルスクリーンモード、Escキーで元に戻ります。

14行目は、こういう書き方の方が安全なんだ。なぜかというと str がもし null だったとき、解答例1の15行目の書き方だと NullPointerException が発生してしまうけど、この書き方だと、false が返るだけなんだ。。


<解答例 4>
F11キーでフルスクリーンモード、Escキーで元に戻ります。

for-each 文を使った場合の書き方。


<解答例 5>
F11キーでフルスクリーンモード、Escキーで元に戻ります。

while文を使った場合の書き方。






初めての方へ:このページは、このサイトで用意しているプログラミング問題の解答と解説のページです。このサイトではブラウザ上からプログラミングができます。会員登録(無料)して、プログラミングしてみませんか?
新規登録



ログイン
メールアドレス:

パスワード:



パスワード紛失

新規登録