为什么我在以下代码中遇到编译时错误?
private static void phi(int n){
if(n > 1000)
for(int i = 3; i <= n; i += 2)
//do something
else
for(int i = 35; i <= n; i += 90)
//do something
}
错误说
java:22:错误:变量
中定义i
已在方法phi(int)
但据我所知,在任何情况下,if statement
或else statement
都会被执行,但两者都不会同时执行。
这是Java
编译技巧的漏洞还是我的方法错了?
Brackets似乎解决了这个问题。非常感谢黑带。
编辑1
双括号似乎不是一个原因,因为我在删除括号后仍然会出错。事实上,双括号被误添加了。
答案 0 :(得分:3)
在if
之后和else
之前有多行,所以你必须使用大括号来获得所需的行为,这在for
语句中是不必要的,但在在这种情况下if
。
此外,正如@Joseph82所指出的......第一个(
还有一个额外的if
!
private static void phi(int n){
if(n > 1000) {
for(int i = 3; i <= n; i += 2)
//do something
} else {
for(int i = 35; i <= n; i += 90)
//do something
}
}
答案 1 :(得分:1)
从(
删除额外的if((n > 1000)
并使用Blocks和Curly Braces。