因此,我完成了此作业,以为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(仅在方括号内)

如果!IsValidInJanfalse,则检查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/

10-09 08:03