java - 用java创建正确的表达式
问题描述
我正面临一个问题,需要你的帮助。我有以下情况:
我有三个价值观:
boolean visible
int views
int executions
现在,我想创建一个表达式,hidden
在我的数据库中设置为真或假。
我应该得到这个:
- 如果 visible 为真,则视图 <=4 或执行次数 <=5
hidden = false
我的代码如下所示:
calculateHiddenFlag(boolean visible, int views, int executions) {
return visible && (views <=4 || executions <=5);
}
有人可以支持我吗?
单元测试:
@Test
public void calculateHiddenFlag_false_if_hidden_false() {
assertFalse(ImportHelper.calculateHiddenFlag(false, 0, 0));
}
@Test
public void calculateHiddenFlag_true_if_hidden_true_and_views_leq4() {
assertTrue(ImportHelper.calculateHiddenFlag(true, 4, 0));
}
@Test
public void calculateHiddenFlag_true_if_hidden_true_and_executions_leq5() {
assertTrue(ImportHelper.calculateHiddenFlag(true, 0, 5));
}
@Test
public void calculateHiddenFlag_false_if_hidden_true_but_views_gt4() {
assertFalse(ImportHelper.calculateHiddenFlag(true, 10, 0));
}
@Test
public void calculateHiddenFlag_false_if_hidden_true_but_executions_gt5() {
assertFalse(ImportHelper.calculateHiddenFlag(true, 0, 10));
}
解决方案
(根据下面的评论编辑)
最初的声明应解释为
if visible is true AND views <= 4 OR executions <= 5 then hidden = false
并在添加括号以遵守逻辑运算符的优先级之后
if visible is true AND (views <= 4 OR executions <= 5) then hidden = false
因此,代码实际上就是您在阅读时所说的:
calculateHiddenFlag(boolean visible, int views, int executions) {
return !(visible && (views<=4 || executions<=5));
}
或者根据逻辑运算符的优先级使用一些德摩根定律两次并删除括号
calculateHiddenFlag(boolean visible, int views, int executions) {
return !visible || views>4 && executions>5;
}
推荐阅读
- c# - 导出连接器 - 处理 KTM 表结构
- javascript - 如何使用嵌套数组在javascript中形成对象,使用第一个数组作为对象,数组的其余部分作为值
- python - 在python中导入kinect库时出现整数值错误
- testing - 如何为需求中未提及的附加功能创建测试策略?
- internet-explorer-11 - 用户代理字符串之间的区别
- python - 无法使用 Pandas DataFrame 对象上的循环获得正确的 DataFrame 形状(行*列)
- sql-server - 我可以提高 excel 到 sql 的 powerquery 性能吗?我使用命名范围参数而不是单元格值?
- flutter - 从国家代码中获取本地化的国家名称
- asp.net-core - 当后缀为“Z”时,ASP.NET Core API ISO8601 未在本地时间解析
- matlab - Matlab parfor 中的工人数量