-1

这是我的代码片段...

Boolean Add;
Double Answer;

Add = false;

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

让我感到困惑的是,在我的代码末尾,它一直在评估和打印 3 + 6,即使该代码专门用于使其不显示。任何帮助,将不胜感激。

编辑:谢谢大家

4

4 回答 4

6

您的条件末尾有一个分号if。Java 会将if视为您的条件的主体。下面带有大括号的块与if条件分离,并将始终运行。

删除分号,Java 会将带有大括号的块解释为if语句的主体。

改变

if (Add == true);

if (Add == true)  // no semicolon

此外,Add已经是一个布尔值(a Booleanunboxed to a boolean)。你可以说:

if (Add)
于 2013-09-17T23:08:16.807 回答
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)

于 2013-09-17T23:08:09.553 回答
1

您将原始类型与引用类型混合在一起(这实际上不是问题,但仍然是一种不好的做法),更重要的是,条件后面有一个额外的分号!。尝试这个:

boolean add;
double answer;

add = false;

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

这种看似无害;的做法是问题的根源。如果;在条件后添加 a,则表示:这是条件的结尾,里面不会有任何说明。其余的代码,内部的部分{}在块内运行,但将始终被执行 - 它在if语句之外。

于 2013-09-17T23:08:30.230 回答
-1

后面有一个分号,if所以它不会被执行。改变:

if (Add == true);

至:

if (Add == true)

此外,您应该考虑使用boolean原语而不是Boolean类。

于 2013-09-17T23:08:21.150 回答