Java中的嵌套条件

Java中的嵌套条件,java,Java,问题 给定以下代码: if (enforceLength && rawContents.length != recordLength) { 现在,如果enforceLength和rawContents与recordLength不匹配,它将返回true并触发我们的警告系统。但是,我们的一些recordLength比rawContents.length长HEADER\u DIFF字符 因此,我们希望在rawContents.length上添加或,以便它可以匹配recordLengt

问题

给定以下代码:

if (enforceLength && rawContents.length != recordLength) {
现在,如果
enforceLength
rawContents
recordLength
不匹配,它将返回true并触发我们的警告系统。但是,我们的一些
recordLength
rawContents.length
HEADER\u DIFF
字符

因此,我们希望在
rawContents.length
上添加
,以便它可以匹配
recordLength
recordLength+HEADER\u DIFF

问题

是否有一种简单的方法可以仅在if语句的第二部分上创建OR条件?i、 e.如果
rawContents.length
不等于
recordLength
,但如果
recordLength
恰好比预期长,则不会触发警报

失败的尝试

一次尝试失败:

if (enforceLength && rawContents.length != recordLength + HEADER_DIFF 
  || rawContents.length != recordLength)

非逻辑或逻辑结

if (enforceLength && rawContents.length != recordLength
        && rawContents.length != recordLength + HEADER_DIFF) {
也许消极的东西更容易理解

if (enforceLength && !(rawContents.length == recordLength
        || rawContents.length == recordLength + HEADER_DIFF)) {

非逻辑或逻辑结

if (enforceLength && rawContents.length != recordLength
        && rawContents.length != recordLength + HEADER_DIFF) {
也许消极的东西更容易理解

if (enforceLength && !(rawContents.length == recordLength
        || rawContents.length == recordLength + HEADER_DIFF)) {

如果两个条件均不正确,则失败:

if (enforceLength && !(rawContents.length == recordLength + HEADER_DIFF || rawContents.length == recordLength))

如果两个条件均不正确,则失败:

if (enforceLength && !(rawContents.length == recordLength + HEADER_DIFF || rawContents.length == recordLength))

如果我正确理解了您的问题,您只需要在OR周围使用括号,并将其替换为and,如下所示:

if (enforceLength && (rawContents.length != recordLength && rawContents.length != recordLength + HEADER_DIFF))

如果我正确理解了您的问题,您只需要在OR周围使用括号,并将其替换为and,如下所示:

if (enforceLength && (rawContents.length != recordLength && rawContents.length != recordLength + HEADER_DIFF))

您是否考虑过使用嵌套if

if (enforceLength)
{
    if(test for header diff)
     {
        rawContents.length != recordLength + HEADER_DIFF 
     }

    else
    {
     rawContents.length != recordLength)
    }
}

它更复杂,但更难理解。

您考虑过使用嵌套if吗

if (enforceLength)
{
    if(test for header diff)
     {
        rawContents.length != recordLength + HEADER_DIFF 
     }

    else
    {
     rawContents.length != recordLength)
    }
}

这更复杂,但更难理解。

这是一个典型的问题,通过对箭头模式的非理性恐惧,试图在一个
if
语句中折叠太多内容

这肯定会更清楚

    if (enforceLength) {
        // Can be correct or out by HEADER_DIFF
        if(!(rawContents.length == recordLength + HEADER_DIFF || rawContents.length == recordLength)) {

        }
    }

这是一个典型的问题,通过对箭头模式的非理性恐惧,试图将太多内容折叠到一个
if
语句中

这肯定会更清楚

    if (enforceLength) {
        // Can be correct or out by HEADER_DIFF
        if(!(rawContents.length == recordLength + HEADER_DIFF || rawContents.length == recordLength)) {

        }
    }

这不是嵌套的if。这甚至不是有效的语法。错过了最后一个},谢谢你指出。嵌套if的内容是伪代码,因为帖子中没有足够的信息来确定他们如何检查是否必须测试标题差异,而我当时没有能力发布注释。这不是嵌套if。这甚至不是有效的语法。错过了最后一个},谢谢你指出。嵌套if的内容是伪代码,因为帖子中没有足够的信息来确定他们是如何检查是否必须测试标题差异的,而我当时没有能力发布注释。@tobias_k实际上-IMHO-这样更好。现在,您可以将您的
else
设置为
if
,并准确了解您正在跟踪的备选方案。如果
enforceLength
false
或长度不好,则原始代码上的
else
将被命中。@tobias_k实际上-IMHO-这会更好。现在,您可以将您的
else
设置为
if
,并准确了解您正在跟踪的备选方案。如果
enforceLength
false
或长度不正确,则原始代码上的
else
将命中。