可变重复错误?

时间:2015-05-14 15:42:50

标签: java android compiler-errors

为什么我在以下代码中遇到编译时错误?

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 statementelse statement都会被执行,但两者都不会同时执行

这是Java编译技巧的漏洞还是我的方法错了?

编辑2

Brackets似乎解决了这个问题。非常感谢黑带。

编辑1

双括号似乎不是一个原因,因为我在删除括号后仍然会出错。事实上,双括号被误添加了。

2 个答案:

答案 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。