0

ユーザーが文字を入力し、表示するフィールドを選択する文字「IF」ステートメントに依存するユーザー入力を取得しようとしています。

「p」と「P」または「F」または「f」と入力すると、「for」ステートメントはまだ入力を理解せず、「else」ステートメントにスローされます。

しかし、なぜですか?

        Scanner scanner = new Scanner(System.in);

        System.out.print("Employee's Last Name: ");
        inputName = scanner.next();
        System.out.print("Employment Status (F or P): ");
        inputStatus = scanner.next();

        if (inputStatus == "F" || inputStatus == "f")
        {
            // some code
        }
        else if(inputStatus == "P" || inputStatus == "p")
        {
            // some code
        }
        else
        {
            System.out.println("I don't understand...");
        }
4

5 に答える 5

4

文字列の比較には常に equals を使用します。& equalsIgnoreCase (大文字と小文字を区別しない比較)

Fまた、パラメーターの 1 つが固定文字列の場合は、不要な null チェックを回避する場合のように比較するために使用する必要があります。

"F".equalsIgnoreCase(inputStatus)

コードは次のようになります。

   System.out.print("Employee's Last Name: ");
    String inputName = null;
    String inputStatus = null;
    if (scanner.hasNext())
        inputName = scanner.next();
    System.out.print("Employment Status (F or P): ");
    if (scanner.hasNext())
        inputStatus = scanner.next();

    if ("F".equalsIgnoreCase(inputStatus)) {
        // some code
    } else if ("P".equalsIgnoreCase(inputStatus)) {
        // some code
    } else {
        System.out.println("I don't understand...");
    }
于 2012-09-20T06:32:54.760 に答える
3

equalsIgnoreCase() メソッドを使用する必要があります。

if (inputStatus.equalsIgnoreCase("f"))
            {
                // some code
                System.out.println(inputStatus);
            }
于 2012-09-20T06:34:17.187 に答える
1

文字列equals()メソッドを使用する必要があります。

于 2012-09-20T06:32:51.853 に答える
1

==演算子を使用して文字列を比較することはできません。この演算子は参照を比較します。equals()代わりにメソッドを使用してください:

if ("F".equals(inputStatus) || "f".equals(inputStatus))

于 2012-09-20T06:33:54.130 に答える
1

Strings「==」の場合は比較できません。これは基本的に、2 つの値のメモリ アドレスを比較するものであり、一致することはありません。

次のようなものを使用する必要があります...

if (inputStatus.equalsIgnoreCase("f")) 
{
    // Do something...
}

代わりは

于 2012-09-20T06:35:04.227 に答える