如何否定这个逻辑表达式



所以,现在我的代码有这样的东西:

if(DateA <= utcNow || (DateA == null && DateB <= utcNow)) doSomething();

我现在想做这样的事情:

if(!InitialExpression) continue;

AFAIK,如果A || B,则否定为!A && !B。但这不起作用:if(DateA > utcNow && (DateA != null || DateB > utcNow)) continue;。当DateA = nullDateB > utcNow时,它应该落入continue,但它没有。

编辑:

我的错误是假设DateA <= utcNow的对立面是DateA > utcNow。但它是DateA == null || DateA > utcNow

选项1-使用ELSE语句

if(DateA <= utcNow || (DateA == null && DateB <= utcNow)) {doSomething() }else{ dpSomethingElse();

  • 选项2-在运算符中使用!

if(!(DateA <= utcNow || (DateA == null && DateB <= utcNow))) doSomethingElse();

  • 选项3-否定-DataA不为null的条件需要先执行。缺少一些上下文,但假设您希望通过确保在DateA大于utcNow时优先选择DateA来否定表达式,否则请检查DateB是否大于utcNow

if((DateA != null && DateA > utcNow) || DateB > utcNow) doSomethingElse()

DateA <= utcNow || (DateA == null && DateB <= utcNow)相反的是

(DateA == null || DateA > utcNow) && (DateA != null || DateB == null || DateB > utcNow)

你的逻辑在Felipe上很好。只是你忽略了一个小方面。<=的否定不仅是>,它还包括一个NULL值。必须将这两个条件加上OR运算符。这应该行得通。

查看以下更新声明:

(DateA == null || DateA > utcNow) && (DateA != null || DateB == null || DateB > utcNow)

相关内容

  • 没有找到相关文章

最新更新