Java无限循环中的尽管语句使条件为假



我是Java新手,但我的问题可能与语言无关。我有一个玩家类,在我的游戏逻辑,我有一个地图商店创建的玩家。我写了一个方法- getNext() -返回下一个球员给我,它像一个魅力。但在游戏中,被淘汰的玩家不能排队。所以我写了一个新方法- getNextAlive() -应该返回下一个活着的(!isLoser)玩家。如果没有任何失败的玩家,getNextAlive()正在工作,但如果有,程序进入while循环并无限循环。在while循环中,我切换到下一个玩家,并确保下一个是活的,但我认为while(p.checkLose())不受影响,而变化,并给出这个输出永远:

球员:allyozturk

我不明白为什么这种情况会发生,我该怎么做才能跳过所有的isLoser玩家并获得下一个活着的玩家?(顺便说一句,我使用libgdx ArrayMap和我的地图是有序的,因为下一个玩家的顺序对我的游戏很重要)

游戏中我使用:

currPlayer = currPlayer.getNextAlive();
这里我的player。java是:
    public class Player{
        private static int counter;
        public static int alives;
        private int uniqueId;
        private String name;
        private boolean isLoser;
        .
        .
        .
        private Player getNext(){
            int index = MyGdxGame.players.indexOfKey(uniqueId);
            if(++index < MyGdxGame.players.size)
                return MyGdxGame.players.getValueAt(index);
            else
                return MyGdxGame.players.getValueAt(0);
        }
        public Player getNextAlive(){
            Player p = getNext();
            while(p.checkLose()){
                p = getNext();
                MyGdxGame.logger.error("player: " + p.getName()); // just for testing purpose
            }
            return p;
        }
    }

和一个额外的问题来自一些好奇心和一些做得最好:它是完全合适的,使用一个方法返回Player在Player类?

p = getNext();替换为p = p.getNext();

最新更新