如果条件语句格式错误?
应该是一个简单的。我有3个复选框,并且有许多条件语句应该根据输入的复选框来执行。在这种情况下,我所有的3“检查”....所以这些陈述都不应该运行。这看起来像我格式化他们错了。让我知道我做错了什么......感谢名单如果条件语句格式错误?
记录:如果2出3个是真正的
// form.isOpenLevel() = true
// form.isPhyCompLevel() = true
// form.isFinCompLevel() = true
这三个声明应该只执行。至少这就是我想要做的。
if ((form.isOpenLevel() == true && form.isPhyCompLevel() == true) && (form.isFinCompLevel() != true));
{
paramBean.addFilter(new DetFilterCriteriaBean("MSST_HEADER_DATA_MV.FIN_COMP_DATE","is","NULL"));
}
if ((form.isPhyCompLevel() == true && form.isFinCompLevel() == true) && (form.isOpenLevel() != true));
{
paramBean.addFilter(new DetFilterCriteriaBean("MSST_HEADER_DATA_MV.PHYS_COMP_DATE","is","NOT NULL"));
}
if ((form.isOpenLevel() == true && form.isFinCompLevel() == true) && (form.isPhyCompLevel() != true));
{
paramBean.addFilter(new DetFilterCriteriaBean("nvl2(MSST_HEADER_DATA_MV.PHYS_COMP_DATE,MSST_HEADER_DATA_MV.FIN_COMP_DATE,'X')","is","NOT NULL"));
}
首先,额外的paranthesis是多余的:
((a && b) && c)
相当于
(a && b && c)
而且 - “这三个声明应该仅在2个出了3个是真正的执行“表示
if (b && c)
应该够了。
最后,if
后的分号结束是有条件的:
if (b && c);
statement;
相当于
if (b && c)
{
}
statement
这就是为什么你总是陈述EXECUT。
删除条件后的;
。
感谢信息的人...由于某种原因,我没有注意到分号 – 2012-02-07 19:04:10
@DocHoliday乐意帮忙。你也应该考虑到票据的其余部分。 '((A && B)&& C'可能让其他程序员审批代码的傻笑,并在从句中的额外条件可能会降低性能。 – 2012-02-07 19:06:09
林使他们现在改变了....感谢 – 2012-02-07 19:06:19
摆脱if语句结尾处的分号。这先发制人地关闭它。
换句话说,这样的:
if (a); {
//do something
}
是相同的:
if (a) {
}
{
//do something
}
在这种情况下,//do something
变成一个浮动块,是始终运行,和你的if语句的条件部分没有代码可以运行。
非常感谢马克...我看到正是你的意思 – 2012-02-07 19:04:38
在您的if
语句末尾有分号;删除它们。你在那里结束有条件的 - 大括号中的块被执行外部条件。
此外,您不需要检查是否相等;你的方法返回boolean
值,你可以直接评价:
if (form.isOpenLevel() && form.isPhyCompLevel() && !form.isFinCompLevel())
{
...
}
谢谢主席先生你的回应 – 2012-02-07 19:05:41
摆脱对IF行分号。
分号基本上是对Java说“不做”。请注意,这些是等价的:
if (complex-logic) ;
if (complex-logic) { /* DO NOTHING */ }
后删除分号如果()' – Vladimir 2012-02-07 19:00:54
尝试删除'',''后if',它帮助。 – alf 2012-02-07 19:01:36
感谢大家的快速作出回应......我不敢相信我没有注意到这 – 2012-02-07 19:03:49