0

過去の試験問題を見ているだけで、次の質問に出くわしましたが、あまり意味がありません。

次のコードは、適切な方法でユーザーに挨拶するためのものです。

public static void main( String[] args ) {
    System.out.println("Enter a name");
    String name = EasyIn.getString();
    if (name == "" ) 
        System.out.println("You must input a name");
    else 
        System.out.println("Hello, " + name);
}

この質問は、プログラマーが意図したとおりにプログラムが実行されない理由を尋ねます。現時点ではラップトップが不足しているため(飲み物をこぼしてください!)、さまざまな入力などでコードをテストできません。私が知る限り、唯一の問題は、ユーザーに別の入力を求めないことです空白の場合は名前を入力し、プログラムを終了します。私はこれを答えとして使用しますが、質問の後半で直接取り上げられるため、彼らが探している答えではないと思います. コードに他の問題はありますか?

4

9 に答える 9

2

別のString.equals質問、置き換え:

if (name == "" )

if (name.equals(""))

演算子はオブジェクト参照を比較します. コンテンツを比較する==ために使用する必要があります. または、次を使用できます。String.equalsString

if (name.IsEmpty())
于 2012-12-17T18:39:00.487 に答える
1

変化する:

if (name == "" )

に:

if (name.equals(""))
于 2012-12-17T18:38:48.143 に答える
1

== ""の代わりに.equals("")、またはさらに良いことに、を使用し.isEmpty()ます。

于 2012-12-17T18:38:57.623 に答える
1

文字列の等価性をチェックするには、String#equals()ではなくを使用します。==

于 2012-12-17T18:39:01.617 に答える
1

唯一の問題は、演算子のString comparison使用です。==それでは意図した結果が得られません。演算子は、内容ではなく値を==比較します。String Reference

equals文字列の比較が意図されている場合、文字列の比較は常にメソッドを使用して行う必要がcontentsあります。

于 2012-12-17T18:39:01.657 に答える
1

equals() メソッドを使用して文字列の等価性をチェックする必要があります。==文字列の場合の演算子は、2 つの文字列が同じ文字列オブジェクトを参照しているかどうかをチェックするだけです

 if (name == "" )

should be

 if (name.equals("") )

または、String.isEmpty()を使用して、文字列が空かどうかを確認することもできます

 if (name.isEmpty())
于 2012-12-17T18:39:02.807 に答える
0

申し訳ありませんが、コメントを残すことができません。1. では、そのプログラムを単に終了すると書いたときの意味は何ですか? 2つの「println()」のうちの1つを出力する必要があると思います-どちらですか?2. Mybee は、ユーザーが空でない文字列を入力するまで動作するループ「while」を挿入する必要があります。

while (!name.equals("")) { ... }

PS。申し訳ありませんが、コメントを残すことができません。承認された回答がないことがわかりました...

于 2012-12-17T20:53:47.993 に答える
0

問題は、文字列で == を実行できないことです。メソッド name.equals を使用する必要があります

于 2012-12-17T18:44:39.757 に答える
0

==の代わりにStrings を比較し.equals()ます。

==オブジェクト参照を比較します。2 つの文字列の内容は比較されません。

于 2012-12-17T18:39:29.830 に答える