以下是我的代码片段......
Boolean Add;
Double Answer;
Add = false;
if (Add == true);
{
Answer = (3 + 6);
System.out.print(Answer);
}
令我感到困惑的是,在我的代码结束时,它会不断评估和打印3 + 6,即使代码专门用于不显示。任何帮助将不胜感激。
编辑:谢谢大家
答案 0 :(得分:6)
在if
条件结束时,您有一个分号。 Java会将 视为if
条件的正文。 <* 1}}条件与if
条件分开并始终运行。
删除分号,Java会将带有大括号的块解释为if
语句的正文。
更改
if (Add == true);
到
if (Add == true) // no semicolon
此外,Add
已经是一个布尔值(Boolean
已取消装箱到boolean
)。你可以说:
if (Add)
答案 1 :(得分:5)
在;
条件后删除if
。
if (Add == true);//<-here
如果您格式化此代码,您将获得
if (Add == true)
;
与在if
if (Add == true)
{}//empty block
所以此块将始终执行,因为它实际上不再与if
条件
{
Answer = (3 + 6);
System.out.print(Answer);
}
BTW == true
部分是多余的。您可以将其写为if (Add)
答案 2 :(得分:1)
你将原始类型与引用类型混合在一起(实际上不是问题,但不过是一种不好的做法),更重要的是,在条件之后还有一个额外的分号!试试这个:
boolean add;
double answer;
add = false;
if (add == true) // remove the ; from here
{
answer = 3 + 6;
System.out.print(answer);
}
看似无力的;
是问题的原因。如果你在条件之后添加;
,那么你说:这是条件的结束,里面没有任何指令。其余的代码,{}
内的部分在一个块内运行,但总是被执行 - 它在if
语句之外。
答案 3 :(得分:-1)
if
之后您有一个分号,因此不会执行。变化:
if (Add == true);
为:
if (Add == true)
另外,您应该考虑使用boolean
原语而不是Boolean
类。