アプリケーションに問題があります。ユーザーが文字列に値を入力しない場合 (つまり、何かを入力するように求められた後に Enter キーを押すだけ)、アプリがプログラムを終了するかどうかを尋ねます。
私はそれを正しくやっていますか?
words = s.nextLine();
if (words.equals(null)) {
アプリケーションに問題があります。ユーザーが文字列に値を入力しない場合 (つまり、何かを入力するように求められた後に Enter キーを押すだけ)、アプリがプログラムを終了するかどうかを尋ねます。
私はそれを正しくやっていますか?
words = s.nextLine();
if (words.equals(null)) {
いいえ、あなたはそれを正しくしていません。
nextLine()
ユーザーが単にreturn を押すと、空の文字列が返されます。私が知る限り、それは二度と戻りませんnull
。入力の終わりに達した場合は、スローします (その場合に nullを返すのとNoSuchElementException
は異なります)。あなたが望んでいるのは:BufferedReader.readLine()
if (words.equals(""))
また
if (words.length() == 0)
また
if (words.isEmpty())
...そして、hasNextLine()
最初に入力の終わりを検出したい場合に使用します。
いいえ、そうではありません。
ユーザーが単純に Enter キーを押すと、 ではなく空の文字列が返されますnull
。これは次のように確認できます。
if(words.equals(""))
空白がある場合、これは失敗します。その場合
if(words.trim().equals(""))
動作するはずです。
取得するのは空の文字列であるため、null は正しくありません。
使用:
words.isEmpty()
または
words.equals("")
または
words.length()==0
これはうまくいくはずです:
if (words == null || words.length() == 0) {
返された文字列は null ではなく、単なる空の文字列です。
words.equals("");
正しいはずです