因此,我完成了此作业,以为Date
类构建接触器,检查数据是否有效,在检查时,我应该考虑of年的可能性。所以我得到了变量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 )
忽略大部分。事实是,在方括号内(如果是中点),我需要以下条件逻辑:
如果
!IsValidInJan
为true,则整个阶段为true
(仅在方括号内)如果
!IsValidInJan
是false
,则检查daysByMonth[month] < day
是否为真,并以此作为结果(仅在方括号内)
我不想将其分隔为较小的
if
语句。我如何实现这种逻辑?
最佳答案
如果!IsValidInJan为true,则整个步骤为true(仅在内部
括号)
如果!IsValidInJan为假,则检查daysByMonth [month] 是与否,并以此作为结果(仅在方括号内)
您可以使用条件或运算符||
来实现。
条件运算符(||
和&&
)表现出“短路”行为,这意味着仅在需要时才对第二个操作数求值。 documentation中的更多信息。
因此,您可以将表达式写为!IsValidInJan || daysByMonth[month] < day
在这里,如果第一个操作数!IsValidInJan
为true,则不评估第二个操作数。
如果!IsValidInJan
为false,则仅对daysByMonth[month] < day
求值,并将其结果作为整个表达式的结果传递。
因此,您的if
语句可以写为:
if(year > current_year || (!IsValidInJan || daysByMonth[month] < day) || day < 0)
关于java - 如何使条件取决于一项陈述,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57743275/