在java中使用for循环时的变量范围 - eclipse / compiler错误?

时间:2010-07-17 10:43:15

标签: java eclipse for-loop scope

我写了以下代码:

for(int layer = 0; layer <countLayers; layer++);
{
    List<Sprite> spritesInLayer = sceneGraph.getLayer(layer);
}

当我编译这个片段时,我得到一个错误,在for-Loop中的行中,eclipse抱怨'layer'是一个未知符号[... = sceneGraph.getLayer(layer);]并且想要我引入字段/变量/ ...'layer'。

但是在使用此代码段时,它可以正常工作。

int layer = 0;
for(layer = 0; layer <countLayers; layer++);
{
    List<Sprite> spritesInLayer = sceneGraph.getLayer(layer);
}

有人知道,我在第一段代码中缺少什么?或者这可能是某种eclipse / java编译器的错误?

我在Win 7 64位家庭高级版和Eclipse Helios 64位(版本20100617-1415)上使用Java 6 JDK Update 20 64位

3 个答案:

答案 0 :(得分:4)

更改

for(int layer = 0; layer <countLayers; layer++);

for(int layer = 0; layer <countLayers; layer++)

虚假分号意味着for循环有一个空体。以下{....}被解释为单独的语句。当然,layer超出了该范围的范围。

答案 1 :(得分:2)

删除for行后面的分号! 大括号的内容在您的示例中没有循环,因此layer未定义...

这就是eclipse有用的原因!

答案 2 :(得分:1)

请删除分号“;”从以下一行开始。

for(int layer = 0; layer&lt; countLayers; layer ++);

for statement不需要;