OR字符串的运算符?

时间:2014-02-02 19:28:12

标签: java

我正在编写一个简单的验证工具。

“|”你看到最后一点不起作用,也不是“||”。我该怎么办?

    if (flightClass.equals("1")) {
    System.out.println("Good input 1.");
}


if (flightClass.equals("2")) {
    System.out.println("Good input 2.");
    } 

if (!flightClass.equals("1" | "2")) {
    System.out.println("Bad input 2.");

3 个答案:

答案 0 :(得分:6)

请改用:

if (!flightClass.equals("1") && !flightClass.equals("2")) {

虽然您可以改为使用if ... else

if (flightClass.equals("1"))
{
    ...
}
else if (flightClass.equals("2"))
{
    ...
}
else
{
    ...
}

答案 1 :(得分:1)

您可以使用String#matches方法和正则表达式:

if (!flightClass.matches("1|2")) {
  // whatever
}

附注:使用!flightClass.equals("1") || !flightClass.equals("2")的建议的答案是错误的。正如人们可以很容易地看到这个布尔表达总是true任何字符串不等于“1”或不等于“2”。

这是布尔表:

flightClass   !flightClass.equals("1")   !flightClass.equals("2")    OR result 
"0"           true                       true                        true 
"1"           false                      true                        true
"2"           true                       false                       true

正确的方法是if (!(flightClass.equals("1") || flightClass.equals("2")))或De Morgan先生advicesif (!flightClass.equals("1") && !flightClass.equals("2"))

答案 2 :(得分:0)

试试这个

 if (!flightClass.equals("1") || !flightClass.equals("2")) {
        System.out.println("Bad input 2.");
    }