这实际上不是解决问题的方法,但我感到好奇的是,为什么下面的代码会给出confusing indentation
警告,可能会遗漏周围的区块:
if(x!=y)
System.out.println("not equal");
index++;
如果我将System.out.println("not equal");
置于{}
内,警告就会消失,但我对目前看起来代码出错的情况感到好奇。
答案 0 :(得分:4)
问题在于,当您阅读此代码时,您错过了一个视觉提示,System.out.println("not equal");
仅在条件(x!=y)
为真时运行。当你缩进代码时,错误也会消失:
if (x != y)
System.out.println("not equal");
有些人可能仍然建议不要使用单行后果,并鼓励你无论如何使用积木。人们可能只想在System.out
下添加另一行代码,认为它也会在x != y
时执行 - 而不会注意到大括号丢失。
答案 1 :(得分:2)
if语句中的任何内容通常都是为了清晰而缩进。例如:
if(foo) {
if (bar) {
System.out.println("foo bar");
}
}
由于您只编写1行语句,因此不需要{}
,但仍建议使用缩进。没有它,不会立即明白什么将会被执行,哪些不会被执行。
例如,如果读取您的代码的人不知道在没有括号的if语句中只执行了1行,他们可能会认为只有index++;
<才会调用(x!=y)
行。 / p>
此外,如果不对所有if语句使用{}
,则更有可能成为开发人员。如果你养成不使用它们的习惯,并且忘记将它们用于多行if语句,你将得到意想不到的结果。例如,如果您决定在if System.out.println("not equal");
中放置一些内容,那么很容易忘记{}
。