Java 将布尔值声明为False,结果为true(已修复)

Java 将布尔值声明为False,结果为true(已修复),java,math,boolean,Java,Math,Boolean,下面是我的代码片段 Boolean Add; Double Answer; Add = false; if (Add == true); { Answer = (3 + 6); System.out.print(Answer); } 让我困惑的是,在我的代码结束时,它一直在计算和打印3+6,即使代码是专门为使其不显示而设计的。任何帮助都将不胜感激 编辑:谢谢大家删除在如果条件之后 if (Add == true);//<-here 这与在if if (Add == true) {}

下面是我的代码片段

Boolean Add;
Double Answer;

Add = false;

if (Add == true);
{
Answer = (3 + 6);
System.out.print(Answer);
}
让我困惑的是,在我的代码结束时,它一直在计算和打印3+6,即使代码是专门为使其不显示而设计的。任何帮助都将不胜感激


编辑:谢谢大家

删除
在<代码>如果
条件之后

if (Add == true);//<-here
这与在
if

if (Add == true)
{}//empty block
因此,此块将始终执行,因为它实际上不再与
if
条件相关

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


顺便说一句,零件处于冗余状态。您可以将其写成
if(Add)
您的
if
条件的末尾有一个分号。Java将把它作为您的
if
条件的主体。下面带有大括号的块将从
if
条件中分离,并将始终运行

去掉分号,Java将把带大括号的块解释为
if
语句的主体

改变

if (Add == true);

此外,
Add
已经是一个布尔值(a
boolean
未绑定到a
boolean
)。你可以说:

if (Add)

如果后面紧跟着一个分号,则不会执行该命令。更改:

if (Add == true);
致:


你也应该考虑使用<代码>布尔原语,而不是<代码>布尔-< /Cord>类.< /p> 你将原始类型与引用类型混合(不是问题,但却是一个坏的实践),更重要的是,条件之后有一个额外的分号。试试这个:

boolean add;
double answer;

add = false;

if (add == true) // remove the ; from here
{
    answer = 3 + 6;
    System.out.print(answer);
}
看起来没有恶意的
是问题的原因。如果您添加一个
在条件之后,您声明:条件结束了,里面没有任何说明。代码的其余部分,即
{}
内部的部分在块内运行,但始终会被执行-它在
if
语句之外。

@Bill:MS Turbo Borland C#++
if (Add == true);
if (Add == true)
boolean add;
double answer;

add = false;

if (add == true) // remove the ; from here
{
    answer = 3 + 6;
    System.out.print(answer);
}