在循环中操作类列表,同时条件迭代该列表

时间:2016-03-26 04:57:11

标签: java arrays class arraylist

如果标题不清楚,请注意。我不太确定如何说出来。

所以我有静态游戏类。此Game类包含多个ArrayLists作为类变量。

我的工作是尽可能减少游戏。为此,我实现了一个reduce(Game)函数,它执行下一个缩减步骤。

当然,reduce函数会编辑存储在Game类下的数组列表。例如,它将删除不需要的转弯。

我有一个可缩减(游戏)功能,如果游戏可以减少更多,则返回true。该函数迭代各种移动,如果不需要移动则返回true,否则返回false。

我遇到的问题是,reducable函数正在尝试使用/查找在迭代之前删除的移动。

例如,如果我尝试:

while(reducable(game))
     reduce(game);

我从reducable得到一个数组索引超出范围的错误,因为它使用原始数组大小而不是新大小。

如果我依赖输入或计数器之类的东西那么它可以正常工作

while(!scanner.nextLine().contains("stop"))
     reduce(game);

然而,这不是一个合理的解决方案,因为我试图让它自动执行,我不知道需要多少减少。

以下是我使用的代码的基础

public static void performReduction(Game game){
    int i = 0;
    while(reducable(game)){
        reduce(game);
    }

}
public static boolean reducable(Game game){
    for(int i = 0; i < game.turns.get(0).size(); i++){
        for(int j = 0; j < game.turns.get(1).size(); j++){
            if(notNeeded(....))
                return true;
        }
    }
    return false;
}
public static boolean notNeeded(Game g, int p){
        for(int i = 0; i < game.turns.get(p).size(); i++){
            for(int j = 0; j < game.turns.get(p).size(); j++){
                 if(....)
                    return truel
                }
            }
        return false;
}

问题,或多或少: reduce函数从Game中的列表中删除信息。 (即轮流) 执行while循环的条件函数需要迭代这些函数以确定是否可以减少。 尝试访问不再存在的列表索引时出现越界错误。

我尝试将reducable函数用作类函数,但结果相同。我也试过减少返回一个Game实例,并使用递归,但也给出了相同的结果。

`

0 个答案:

没有答案