这是我的代码片段...
Boolean Add;
Double Answer;
Add = false;
if (Add == true);
{
Answer = (3 + 6);
System.out.print(Answer);
}
让我感到困惑的是,在我的代码末尾,它一直在评估和打印 3 + 6,即使该代码专门用于使其不显示。任何帮助,将不胜感激。
编辑:谢谢大家
您的条件末尾有一个分号if
。Java 会将其if
视为您的条件的主体。下面带有大括号的块与if
条件分离,并将始终运行。
删除分号,Java 会将带有大括号的块解释为if
语句的主体。
改变
if (Add == true);
至
if (Add == true) // no semicolon
此外,Add
已经是一个布尔值(a Boolean
unboxed to a boolean
)。你可以说:
if (Add)
;
条件后删除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)
您将原始类型与引用类型混合在一起(这实际上不是问题,但仍然是一种不好的做法),更重要的是,条件后面有一个额外的分号!。尝试这个:
boolean add;
double answer;
add = false;
if (add == true) // remove the ; from here
{
answer = 3 + 6;
System.out.print(answer);
}
这种看似无害;
的做法是问题的根源。如果;
在条件后添加 a,则表示:这是条件的结尾,里面不会有任何说明。其余的代码,内部的部分{}
在块内运行,但将始终被执行 - 它在if
语句之外。
后面有一个分号,if
所以它不会被执行。改变:
if (Add == true);
至:
if (Add == true)
此外,您应该考虑使用boolean
原语而不是Boolean
类。