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,以避免不必要的空检查。

"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,这基本上是比较两个值的内存地址,永远不会匹配。

你应该使用类似...

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

反而

于 2012-09-20T06:35:04.227 回答