Java程序赢得';t finish方法-在for循环后退出,但没有错误

Java程序赢得';t finish方法-在for循环后退出,但没有错误,java,methods,Java,Methods,编辑:在我写这篇文章的时候,我简化了我的代码(完全丢失了数组),并使其正常工作。但是我仍然不确定为什么这个特定的代码不能工作,所以我保留这个问题 你好 我正在用Java编写一个小的益智游戏(使用Eclipse4.4.2),在我的一个方法中偶然发现了一个问题。基本上-它不会完成该方法,它只是在for循环完成后退出该方法,没有任何警告或错误(我也不会捕获异常)。我希望我错过了一些简单的事情 详情: 我有一种方法可以设置一个对象的颜色,最多可以设置5个通过线条链接到它的其他对象的颜色。我设置了主对象的

编辑:在我写这篇文章的时候,我简化了我的代码(完全丢失了数组),并使其正常工作。但是我仍然不确定为什么这个特定的代码不能工作,所以我保留这个问题

你好

我正在用Java编写一个小的益智游戏(使用Eclipse4.4.2),在我的一个方法中偶然发现了一个问题。基本上-它不会完成该方法,它只是在for循环完成后退出该方法,没有任何警告或错误(我也不会捕获异常)。我希望我错过了一些简单的事情

详情:

我有一种方法可以设置一个对象的颜色,最多可以设置5个通过线条链接到它的其他对象的颜色。我设置了主对象的颜色,然后通过for循环找到链接的对象,最后也更改了它们的颜色。(仔细检查代码中的行,有简单的返回方法,并将nestA和nestB作为数据-没有问题)。lines是一个长度为50的数组,嵌套作为其成员

代码如下:

public void highlightNests(Nest nest) {

    //setting the color of the main object (a nest).
    Mappers.setColor(nest, nestHighlight);

    //resetting the array. Temp solution, had a return method earlier, 
    //this is part of the debugging.
    connectedNests = null;
    connectedNests = new Nest[5];

    int i = 0;
    Gdx.app.log("highlightNests()", "starting the loop");

    for (int j=0; j<lines.length; j++) {
        if (lines[j].getNestA() == nest) {
            connectedNests[i] = lines[j].getNestB();
            i++;
        }
        if (lines[j].getNestB() == nest) {
            connectedNests[i] = lines[j].getNestA();
            i++;
        }

    }
    //This is where the program exits the method. The following  
    //lines are not run.
    Gdx.app.log("highlightNests()", "entering loop");
    for (int l=0; i<connectedNests.length; l++) {
        Mappers.setColor(connectedNests[l], nestHighlight);
        Gdx.app.log("highlightNests",  "set color");
    }

}
public void highlightnest(嵌套){
//设置主对象(嵌套)的颜色。
setColor(嵌套、嵌套高光);
//重置array.Temp解决方案之前有一个返回方法,
//这是调试的一部分。
connectedNests=null;
connectedNests=新嵌套[5];
int i=0;
log(“highlightNests(),“启动循环”);

对于(int j=0;j您必须使用
l
而不是
i
在以下情况下:

for (int l=0; l<connectedNests.length; l++)...
   //---------^ l not i

用于(int l=0;l您的第二个循环完全错误,您将计数器声明为
l
,并递增另一个计数器
i
,您应该使用
l此代码存在许多问题。您的第二个循环将无限运行,或者根本不运行,因为您在循环中检查
i
,而不更改它。您是这样做的吗您确定要在第二个循环中使用
i
(不是
l
?)此外,在您的“中间”,每次迭代都有可能将i增加两次(或者可能不是,取决于getNestA/b的逻辑。这不是一个答案。如果你对op有问题,请尝试发表评论或聊天。哦,天哪。你完全正确。我知道它必须是简单的,只是必须让其他人指出。谢谢你的时间!
for (int l=0; l<connectedNests.length; l++) {
    Mappers.setColor(connectedNests[l], nestHighlight);
    Gdx.app.log("highlightNests",  "set color");
}