对如何使用||感到困惑和&&在相同的if语句中。谁能发现问题?

时间:2019-02-15 05:53:16

标签: java string

我对如何在同一if语句中使用||&&感到困惑。

我要执行的操作是,如果字符串以"D""O"开头,并且打印为真,请检查该字符串是否具有两个字符长。< / p>

示例:如果字符串为"DE",它将打印一些内容。但是,如果它是"SE",则不会打印任何内容。

else if( (answer.startsWith("D") || answer.startsWith("O")) 
            && (answer.length() == 2) ) {
 //print something
}

3 个答案:

答案 0 :(得分:0)

Java正在对您的逻辑施加“短路”。它执行第一部分(以“ D”或“ O”开头),如果是,则继续进行第二部分(长度为2)。但是,如果第一部分的计算结果为假,那么它甚至不会费心执行第二部分。

因此,您的“ SE”字符串将永远不会进入“打印内容”位,因为它不满足您以D或O开头的第一个条件。根据您对逻辑的描述,这是正确的

如果您实际上是说如果它以“ D”或“ O”开头,则 OR 的长度为2个字符,那么您的逻辑语句应该为:

else if( answer.startsWith("D") || answer.startsWith("O") 
        || (answer.length() == 2 ) {
 //print something
}

编辑:糟糕,第一次才粘贴原始代码!!

答案 1 :(得分:-1)

我会先检查长度,然后再检查两个条件,例如

else if (answer.lenght()==2) {
     if (answer.startsWith("D") || answer.startsWith("O"){
      //print something that lenght is 2 and starts with D or O
     }
   } 
}

答案 2 :(得分:-2)

在这种情况下,您必须先检查长度,因为&&如果左侧和右侧均正确,则为true

else if( (answer.length() == 2)&&(answer.startsWith("D") || answer.startsWith("O"))
{
 //your logic 
}