Java 修复这些布尔值的简单方法是什么?

Java 修复这些布尔值的简单方法是什么?,java,boolean,logic,Java,Boolean,Logic,我可以用一个很长的if语句来实现这一点,但我只是想知道是否有一种简单的方法来实现这一点。您提出的解决方案可以简化为 a = False b = True a = True b = False a = False b = False 这应该适合您: if (!a || !b) { .... } 通过检查一个是否为假或两个都为假,可以确保两个都为真,或者a&&b。a&b的反面是!a | | |!b: if( !a || !b ) { doSomething(); } !( (a &

我可以用一个很长的if语句来实现这一点,但我只是想知道是否有一种简单的方法来实现这一点。

您提出的解决方案可以简化为

a = False b = True
a = True b = False
a = False b = False

这应该适合您:

if (!a || !b) { .... }

通过检查一个是否为假或两个都为假,可以确保两个都为真,或者
a&&b
a&b
的反面是
!a | | |!b

if( !a || !b ) {
  doSomething();
}
!( (a && b) && (a || b) )
(时间太多,逻辑崩溃)

首先申请获取
外部:(虽然在此阶段可以应用其他布尔代数来跳过几个步骤,但我想展示一下。)

也就是说,考虑到:

  • (!a | |!b)
    (由DM)->
    !(a和b)
  • (!a&&!b)
    (由DM)->
    !(a | | b)
  • 然后
    (!a | |!b)|(!a&&!b)
    (通过取代)->
    !(a和b)| |!(a | | b)

    再次应用DM:

    if (!(a && b)) {
        doSomethingElse();
    }
    
    现在使用(
    x=a&&b;y=a;z=b
    ):

    通过“联想性”和“沟通性”:

    通过“幂等性”:

    简化:

    !( (a && b) || (a && b) )
    !( (a && b) )
    
    由DM返回:

    !(a && b)
    

    当然,一个简单的示例可能更容易显示这一点。

    您的if语句将起作用,只需将if语句更改为:

    如果(!a | |!b){ } 正如您在上面看到的,当布尔值中的任何一个为false时,它将起作用。


    祝你一切顺利

    你是否将布尔值设置为false?因为它正在检查它们是否为假,并且看起来你已经将它们设置为真了?@Joseswaggid:你的意思是如果其中一个为假,则调用doSomething(),否则调用doSomethingElse()???保持简单:如果至少有一个布尔值为假(那么其中一个或两个都为假)-应该叫doSomethingElse-我希望这能让它更清楚。因为所有的答案要么是
    (!a | |!b)
    要么是
    !(a和b)
    ,这似乎是一个适当的时间来链接,以解释为什么这两个语句是等价的这不起作用。if语句应该起作用:如果至少有一个布尔值为false,那么它确实起作用。如果其中一个布尔值为false,那么(a&&b)将为false。否定了这一点,这才是真的。因此if语句检查是否至少有一个布尔值为false对不起,我在代码中发现了另一个bug,这导致代码无法工作。干得好
    !( (a && b) && (a || b) )
    
    !( ((a && b) && a) || ((a && b) && b) )
    
    !( (a && a && b) || (a && b && b) )
    
    !( (a && b) || (a && b) )
    !( (a && b) )
    
    !(a && b)
    
    !a || !b