变量重复错误?
Variable repeat error?
为什么我在以下代码中遇到编译时错误?
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: error: variable i
is already defined in method phi(int)
但根据我的说法,在任何情况下,if statement
或else statement
都会被执行,但永远不会同时执行两者 .
这是Java
编译技术的漏洞还是我的方法有误?
编辑 2
括号似乎解决了这个问题。非常感谢 blackbelt。
编辑 1
双括号似乎不是原因,因为我在删除括号后仍然出现错误。事实上,双括号是错误添加的。
在 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
}
}
从 if((n > 1000)
中删除一个额外的 (
并使用 Blocks 和大括号。
为什么我在以下代码中遇到编译时错误?
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: error: variable
i
is already defined in methodphi(int)
但根据我的说法,在任何情况下,if statement
或else statement
都会被执行,但永远不会同时执行两者 .
这是Java
编译技术的漏洞还是我的方法有误?
编辑 2
括号似乎解决了这个问题。非常感谢 blackbelt。
编辑 1
双括号似乎不是原因,因为我在删除括号后仍然出现错误。事实上,双括号是错误添加的。
在 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
}
}
从 if((n > 1000)
中删除一个额外的 (
并使用 Blocks 和大括号。