当前位置:  开发笔记 > 编程语言 > 正文

如果有多个&&,|| 条件评估java

如何解决《如果有多个&&,||条件评估java》经验,为你挑选了1个好方法。

如果我理解正确的话,在你的问题的第一部分,你问是否ab必须都为真,整个表达式(a && b || c || d || e)评估为真.

这个问题的答案是否定的.Java运算符的&&优先级高于||.所以等价的表达式是:

(a && b) || c || d || e

因此,如果任何a && bcde为真,则整个表达式将评估为真.例如,如果a为false且c为真,则整个表达式为真.

注意Java条件运算符短路.这意味着一旦表达式的最终结果已知,评估就会停止.例如,如果ab都是真实的,这意味着整个表达式的值必须为真,那么c,d并且e不被评估.

对于问题的第二部分,我们可以应用相同的逻辑.因此,等效表达式为:

(a && b) || (a && c) || (a && d) || (a && e)

如果有任何子组件,这将评估为真,例如.a && c评估为真.正如其他人所指出的那样,a表达式必须是真实的,因为它是每个子组件的一部分.然后,如果任何其他变量为true,则表达式为true.

一旦你理解了这一点,就可以看到@ Arc676建议的这个表达式的简化是如何实现的:

a && (b || c || d || e)

我还应该补充一点,你问题中的两个表达式在逻辑上是不同的.它们相当于:

(a && b) || c || d || e

a && (b || c || d || e)

括号影响评估顺序.在第一个中,a并且b由a组合在一起&&,因此对于表达式的该部分(在括号中)都必须为真.在第二个,b,c,de通过分组在一起||.在这种情况下,只有一个b,c,de需要为表达的那部分(括号)真正是真实的.



1> dave..:

如果我理解正确的话,在你的问题的第一部分,你问是否ab必须都为真,整个表达式(a && b || c || d || e)评估为真.

这个问题的答案是否定的.Java运算符的&&优先级高于||.所以等价的表达式是:

(a && b) || c || d || e

因此,如果任何a && bcde为真,则整个表达式将评估为真.例如,如果a为false且c为真,则整个表达式为真.

注意Java条件运算符短路.这意味着一旦表达式的最终结果已知,评估就会停止.例如,如果ab都是真实的,这意味着整个表达式的值必须为真,那么c,d并且e不被评估.

对于问题的第二部分,我们可以应用相同的逻辑.因此,等效表达式为:

(a && b) || (a && c) || (a && d) || (a && e)

如果有任何子组件,这将评估为真,例如.a && c评估为真.正如其他人所指出的那样,a表达式必须是真实的,因为它是每个子组件的一部分.然后,如果任何其他变量为true,则表达式为true.

一旦你理解了这一点,就可以看到@ Arc676建议的这个表达式的简化是如何实现的:

a && (b || c || d || e)

我还应该补充一点,你问题中的两个表达式在逻辑上是不同的.它们相当于:

(a && b) || c || d || e

a && (b || c || d || e)

括号影响评估顺序.在第一个中,a并且b由a组合在一起&&,因此对于表达式的该部分(在括号中)都必须为真.在第二个,b,c,de通过分组在一起||.在这种情况下,只有一个b,c,de需要为表达的那部分(括号)真正是真实的.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有