我的“IF”声明没有按照我的预期做

时间:2012-09-20 06:30:55

标签: java if-statement

我试图让用户输入用户输入字母然后取决于字母' IF'声明选择要显示的字段。

如果我输入' p'和' P'或者' F'或者' f'我的' for'声明仍然不理解我的意见,并把我扔给其他人。言。

但为什么不呢?

        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...");
        }

5 个答案:

答案 0 :(得分: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...");
    }

答案 1 :(得分:3)

您应该使用equalsIgnoreCase()方法。

if (inputStatus.equalsIgnoreCase("f"))
            {
                // some code
                System.out.println(inputStatus);
            }

答案 2 :(得分:1)

您应该使用字符串equals()方法。

答案 3 :(得分:1)

您无法使用==运算符比较字符串。此运算符比较引用。改为使用equals()方法:

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

答案 4 :(得分:1)

你无法比较Strings if“==”,这基本上会比较两个值的内存地址,这两个值永远不会匹配。

你应该使用像...这样的东西。

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

代替