Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >验证真值表的最小检查次数

验证真值表的最小检查次数
EN

Stack Overflow用户
提问于 2010-10-31 22:42:15
回答 3查看 393关注 0票数 1

我有一个java程序,我想验证3个布尔值中是否有任何一个是假的。我想要找出我可以编写的最小表达式,以检查排列。

if(!(needsWork && (needsApproval || isAdmin) ))

我认为这足以确保如果3个布尔值中有任何一个是假的,我希望停止处理。然而,我暗自怀疑我遗漏了什么。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-31 22:47:42

if (!needsWork || !needsApproval || !isAdmin)不能工作吗?Java支持短路评估。

票数 7
EN

Stack Overflow用户

发布于 2010-11-01 00:05:40

因为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
`any 3 booleans are false` (i.e. `!a || !b || !c`)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
`(! (needsWork && (needsApproval || isAdmin))` (i.e. (! (a && ( b || c))`

有不同的真值表,你确定不同的情况不重要吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a b c   (!a || !b || !c)    (! (a && (b || c)))
T T T          F                    F          
T T F          T                    F
T F T          T                    F
T F F          T                    T
F T T          T                    T
F T F          T                    T
F F T          T                    T
F F F          T                    T

Transformations

我经常尝试使用布尔表达式来澄清或简化它们,我使用这些逻辑转换来帮助我:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// You can push (distribute) `!` into parenthesis if you reverse the `||` or `&&` operator inside:
! (a || b)             <=> (! a && ! b)
! (a || b || c || ...) <=> (! a && ! b && ! c && ...)

! (a && b)             <=> (! a || ! b)
! (a && b && c && ...) <=> (! a || ! b || ! c || ...)

// You can drop parens when the boolean operator outside the parens is the same as inside:
(a || (b || c || ...)) <=> (a || b || c)
(a && (b && c && ...)) <=> (a && b && c)

// You can push (distribute) a boolean op into parenthesis by applying it to each term inside:
(a || (b && c)         <=> ((a || b) && (a || c)
(a || (b && c && ...)  <=> ((a || b) && (a || c) && (a || ...) ...

(a && (b || c)         <=> ((a && b) || (a && c))
(a && (b || c || ...)  <=> ((a && b) || (a && c) || (a || ...) ...

// XOR means the term values have to be different:
(a ^ b)                <=> ((a && !b) || (!a && b))

// XOR means the same as OR unless both terms are true:
(a ^ b)                <=> ((a || b) && ! (a && b))

当然还有很多其他的,但这些是我最常使用的。它可能看起来很复杂,但一旦你开始练习它们,就很容易记住它们。

在您的例子中,如果您想了解一些可能的等价语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(! (needsWork && (needsApproval || isAdmin) ))

以下是一些转换:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(! (needsWork && (needsApproval || isAdmin) ))   => [push the '!' through the `()`]
(! needsWork || ! (needsApproval || isAdmin) )   => [push the 2nd '!' through the `()`]
(! needsWork || (! needsApproval && ! isAdmin))

但我看不到你所拥有的东西有任何真正的简化。

当然,如果检查any of 3 booleans are false是否正常,那么您的选择就很简单

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(! needsWork || ! needsApproval || ! isAdmin) => [or pull the `!` outside the `()`]
(! (needsWork  && needsApproval && isAdmin))
票数 6
EN

Stack Overflow用户

发布于 2010-10-31 22:47:24

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(!(needsWork & needsApproval & isAdmin))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4065539

复制
相关文章
jupyter中运行pyspark
Python for Spark显然比Scala慢。然而,易于学习,并且受益于我最喜爱的库。在我看来,Python是大数据/机器学习领域中原型设计的完美语言。
Tim在路上
2020/08/04
2.4K0
IQKeyboardManager每次运行都会断点到Bug ID:#550
在Xcode9一打断点就会在IQKeyboardManager断点在//Loading IQToolbar, IQTitleBarButtonItem, IQBarButtonItem to fix
傅_hc
2018/07/04
5000
Java中的lambda每次执行都会创建一个新对象吗
之前写过一篇文章 Java中的Lambda是如何实现的,该篇文章中讲到,在lambda表达式执行时,jvm会先为该lambda生成一个java类,然后再创建一个该类对应的对象,最后执行该对象对应的方法,以此来执行我们写的lambda方法体。
KINGYT
2020/01/13
6.1K6
返回执行结果的任务队列:ExecutorCompletionService
有时候我们需要展示一些内容,如果等所有内容都加载完毕再展示这样反而会降低用户体验; 因为如果消耗时间长那么用户需要瞪着空白的页面,反而会失去兴趣; 所以我们希望加载一点资源显示一点,对于那么超过我们容忍范围还未加载完毕的资源我们应该 不再去加载,放弃本次加载或者显示一些默认结果 模拟: final Random r = new Random(); // 创建一个固定大小的线程池 ExecutorService es = Executors.newFixedThreadPool(
用户1215919
2018/02/27
1.3K0
try{}catch{}finally{}运行后的执行结果
1.以下执行结果? (1).代码 public class Demo { public static void main(String[] args) { System.out.println(getValue()); } public static int getValue(){ Scanner sc = new Scanner(System.in); System.out.println("输入一个数"); int
2020/10/23
8060
如何在应用程序中调用CMD并返回运行结果
要求做一个图形界面的应用程序,输入命令行的命令,在后台调用CMD程序执行该命令但不显示DOS命令行窗口,而且能实时显示运行的结果。哪位知道怎么处理?谢啦
用户3519280
2023/07/06
2830
Future,带返回执行结果的线程使用方式
FutureTask是Future的一种实现方式. private final int count; public Counter(int count) { this.count = count; } public void get() throws InterruptedException { // 假设执行一些耗时的操作 Thread.sleep(3000); System.out.println("counter:" + count); } long start = Sys
用户1215919
2018/02/27
1.1K0
在Java中为什么不同的返回类型不算方法重载?
方法重载是指在同一个类中,定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载。 比如以下 4 个 method 方法就可以称之为方法重载,如下代码所示:
磊哥
2022/01/20
3.4K0
在Java中为什么不同的返回类型不算方法重载?
「Python」函数返回值、嵌套调用、执行结果
在程序开发中,有时候会希望一个函数执行结束后,告诉调用者一个结果,一遍调用者针对具体的结果做后续的处理。
python自学网
2022/05/16
2.2K0
「Python」函数返回值、嵌套调用、执行结果
java中==、equals的不同AND在js中==、===的不同
       1.==操作符:首先,对于非基本数据类型的对象比较,相同内存中存储的变量的值是否相等,注意是相同内存地址的才可,并且数值相同(当然地址相同,值也一定相同)才会返回true.     但是,对于基本数据类型的比较(比如:int flot double等),值相同,"=="比较便会返回true.(这是编译的规则,当进行基本数据类型的比较时,会编译生成if_icmpne指令不会进行比较地址。而进行对象比较时,会生成if_icmpne指令,会比较地址。生成的指令都是不同的)。
洋仔聊编程
2019/01/15
4K0
GWAS分析中协变量的区分(性别?PCA?不同品种?)
plink进行GWAS分析时,协变量都要是数字协变量,因子协变量需要转化为dummy变量(哑变量)然后与数字协变量合并,通过--covar进行合并。
邓飞
2022/12/13
2K0
GWAS分析中协变量的区分(性别?PCA?不同品种?)
uniapp如何封装全局方法 并返回执行结果
在uniapp中你可以这样实现,你可以使用Promise对象来实现当全局公共方法执行完后执行调用者的逻辑。以下是一个简单的示例代码:
兔云小新LM
2023/05/25
3.3K0
uniapp如何封装全局方法 并返回执行结果
在python中运行MATLAB代码从而实现批量运算结果
在安装好python和matlab的电脑上,如果需要做一些流程化的内容,matlab这个方面不擅长,此时可以借助python来开发,
用户9925864
2023/09/05
5790
在python中运行MATLAB代码从而实现批量运算结果
C#对称加密(AES加密)每次生成的密文结果不同思路代码分享
思路:使用随机向量,把随机向量放入密文中,每次解密时从密文中截取前16位,其实就是我们之前加密的随机向量。 代码 public static string Encrypt(string plainText, string AESKey) { RijndaelManaged rijndaelCipher = new RijndaelManaged(); byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组
磊哥
2018/04/26
1.6K0
java 查看进程状态_java执行shell命令并返回结果
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172503.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
8760
java 查看进程状态_java执行shell命令并返回结果
pyspark进行词频统计并返回topN
Part I:词频统计并返回topN 统计的文本数据: what do you do how do you do how do you do how are you from operator import add from pyspark import SparkContext def sort_t(): sc = SparkContext(appName="testWC") data = sc.parallelize(["what do you do", "how do you d
云海谷天
2022/08/09
6070
pyspark进行词频统计并返回topN
【Python】PySpark 数据处理 ② ( 安装 PySpark | PySpark 数据处理步骤 | 构建 PySpark 执行环境入口对象 )
命令 , 安装 PySpark , 安装过程中 , 需要下载 310 M 的安装包 , 耐心等待 ;
韩曙亮
2023/10/11
4930
【Python】PySpark 数据处理 ② ( 安装 PySpark | PySpark 数据处理步骤 | 构建 PySpark 执行环境入口对象 )
【Android 返回堆栈管理】打印 Android 中当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 中的不同 Task
命令行输出结果 : 打开 CSDN 客户端 , 然后任意点击一篇博客进入 , 输入内容如下 ;
韩曙亮
2023/03/29
6K0
【Android 返回堆栈管理】打印 Android 中当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 中的不同 Task
mybatis返回结果处理
当查询的记录条数是多条的时候,必须使用集合接收。如果使用单个实体类接收会出现异常。如果返回的是一条记录可以用集合接收
一个风轻云淡
2023/10/15
2310
mybatis返回结果处理
Python 技术篇-通过管道命令获取cmd执行的结果,获取os.system()、subprocess.Popen()执行命令返回的结果
正常的 os.system() 执行完后只会返回个执行状态值,返回的 0 表示执行成功,1 表示执行失败。 如果想要获取到执行后的结果集,就需要用到管道命令 os.popen(),然后用 read() 方法可以读到返回的结果。subprocess.Popen() 命令也可以获取返回的结果。
小蓝枣
2021/12/01
8.4K1
Python 技术篇-通过管道命令获取cmd执行的结果,获取os.system()、subprocess.Popen()执行命令返回的结果

相似问题

查询每次运行时都会返回不同的结果。

46

每次我运行的时候,Pyspark dataframe都返回不同的结果。

15

每次运行boost::thread都会产生不同的结果

10

每次运行RandomForestRegressor都会得到不同的结果

11

每次运行代码我都会得到不同的结果

35
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文