java - 如何建立依赖于一个语句的条件
问题描述
所以我得到了这个作业来为一个类建立一个接触器Date
,检查数据是否有效,在我的检查中,我应该考虑闰年的可能性。所以我得到了变量IsValidInJan
:
boolean IsValidInJan = month != 8 ||
(year % 4 == 0 && year % 100 != 0 && year % 400 == 0);
然后我有一个 if 语句来检查数据是否无效(请注意,如果数据无效,则应该激活 if 语句的主体,而不是相反)
if(year > current_year || (daysByMonth[month] < day && !IsValidInJan)|| day < 0 )
忽略大部分。问题是在括号内(在 if 语句的中间)我想要以下条件逻辑:
如果!IsValidInJan
为真,则整个语句为true
(仅在括号内)
if !IsValidInJan
is false
,然后检查是否daysByMonth[month] < day
为真并将其作为结果(仅在括号内)
我不想把它分成更小的if
陈述。
我怎样才能实现这样的逻辑?
解决方案
如果 !IsValidInJan 为真,则整个语句为真(仅在括号内)
如果 !IsValidInJan 为假,则检查 daysByMonth[month] < day 是否为真并将其作为结果(仅在括号内)
您可以使用条件或运算符||
来实现这一点。
条件运算符 (||
和&&
) 表现出“短路”行为,这意味着仅在需要时才评估第二个操作数。文档中的更多信息。
所以,你可以把你的表达写成!IsValidInJan || daysByMonth[month] < day
在这里,如果第一个操作数!IsValidInJan
为true,则不计算第二个操作数。
如果!IsValidInJan
为false,则仅daysByMonth[month] < day
计算 then 并将其结果作为整个表达式的结果传递。
因此,您的if
陈述可以写成:
if(year > current_year || (!IsValidInJan || daysByMonth[month] < day) || day < 0)
推荐阅读
- android - React Native:Null 不是对象 - 推送通知 (OneSignal)
- c - 在C中返回指向字符串的指针时出现问题
- javascript - Node.js / Express.js - 我应该将我的所有函数都包装在一个新的 Promise 中吗?
- c# - 数据库优先到代码优先 EF - 迁移键和约束名称与数据库不匹配
- django - 无法从表单创建对象
- android - 在 iOS 和 Android 上动态更改应用程序图标
- istio - 将 K8s Ingress 与 Istio 网关一起使用?
- firebase - Arduino wifi > firebase 和超过 1 个 LED 控制
- python - 美丽的汤没有为使用相同 URL 的两个不同程序找到相同的结果
- python - 年龄输入,制作有年龄和年龄组的小系统