Java 修复这些布尔值的简单方法是什么?
我可以用一个很长的if语句来实现这一点,但我只是想知道是否有一种简单的方法来实现这一点。您提出的解决方案可以简化为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 &
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