声明布尔值为False,变为true(FIXED)

时间:2013-09-17 23:06:53

标签: java math boolean

以下是我的代码片段......

Boolean Add;
Double Answer;

Add = false;

if (Add == true);
{
Answer = (3 + 6);
System.out.print(Answer);
}

令我感到困惑的是,在我的代码结束时,它会不断评估和打印3 + 6,即使代码专门用于不显示。任何帮助将不胜感激。

编辑:谢谢大家

4 个答案:

答案 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类。