Java 如果条件语句格式错误?
这应该很容易。我有3个复选框,有许多条件语句,它们应该根据输入的复选框执行。在本例中,我已检查了所有3个“已检查”…因此这些状态都不应运行。看起来我把它们格式化错了。让我知道我做错了什么…thanx 记录器:Java 如果条件语句格式错误?,java,Java,这应该很容易。我有3个复选框,有许多条件语句,它们应该根据输入的复选框执行。在本例中,我已检查了所有3个“已检查”…因此这些状态都不应运行。看起来我把它们格式化错了。让我知道我做错了什么…thanx 记录器: // form.isOpenLevel() = true // form.isPhyCompLevel() = true // form.isFinCompLevel() = true 这三条语句应该仅在三分之二为真时执行。至少我是这么想的 if ((form.isOp
// 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"));
}
首先,额外的妄想是多余的:
((a && b) && c)
相当于
(a && b && c)
此外,“这三条语句只有在三分之二为真时才能执行”表示
应该足够了
最后,如果结束条件,则在后面加上分号:
if ( b && c );
statement;
相当于
if ( b && c )
{
}
statement
这就是为什么你的陈述总是正确的
删除代码>在条件之后。首先,额外的参数是多余的:
((a && b) && c)
相当于
(a && b && c)
此外,“这三条语句只有在三分之二为真时才能执行”表示
应该足够了
最后,如果
结束条件,则在后面加上分号:
if ( b && c );
statement;
相当于
if ( b && c )
{
}
statement
这就是为什么你的陈述总是正确的
删除代码>在条件之后。去掉if语句末尾的分号。这会先发制人地关闭它
换言之,这:
if (a); {
//do something
}
相当于:
if (a) {
}
{
//do something
}
在这种情况下,//do something
将成为一个始终运行的浮动块,并且if语句的条件部分没有代码可运行。去掉if语句末尾的分号。这会先发制人地关闭它
换言之,这:
if (a); {
//do something
}
相当于:
if (a) {
}
{
//do something
}
在这种情况下,//do something
成为一个始终运行的浮动块,if语句的条件部分没有代码可运行。if
语句末尾有分号;移除它们。您将在这里结束条件语句-大括号中包含的块将在条件语句之外执行
此外,您不需要检查平等性;您的方法返回可直接计算的boolean
值:
if ( form.isOpenLevel() && form.isPhyCompLevel() && !form.isFinCompLevel() )
{
...
}
在if
语句的末尾有分号;移除它们。您将在这里结束条件语句-大括号中包含的块将在条件语句之外执行
此外,您不需要检查平等性;您的方法返回可直接计算的boolean
值:
if ( form.isOpenLevel() && form.isPhyCompLevel() && !form.isFinCompLevel() )
{
...
}
去掉IF线上的分号
分号本质上是对Java说“什么也不做”。请注意,这些是等效的:
if (complex-logic) ;
if (complex-logic) { /* DO NOTHING */ }
去掉IF线上的分号
分号本质上是对Java说“什么也不做”。请注意,这些是等效的:
if (complex-logic) ;
if (complex-logic) { /* DO NOTHING */ }
删除if()后面的分号。
尝试删除
在if
之后-这很有帮助。感谢大家的快速回复…我不敢相信我没有注意到在if()之后删除分号。
尝试删除代码>在之后如果-这很有帮助。谢谢大家的快速回复…我不敢相信我没有注意到谢谢信息员…不知为什么我没有注意到semicolons@DocHoliday很乐意帮忙。你还应该考虑其余的笔记<代码>((a&&b)和&c
可能会让其他程序员在查看您的代码时咯咯地笑,并且该子句中的附加条件可能会降低性能。感谢信息员…出于某种原因,我没有注意到semicolons@DocHoliday很高兴为您提供帮助。您还应该考虑其余的注释。((a&b)&&c
可能会让其他程序员在查看您的代码时咯咯地笑,并且该子句中的附加条件可能会降低性能。