首页 > 解决方案 > 如何在java中循环多个对象

问题描述

您好,我对 Java 开发很陌生,我在使用 for 循环时遇到了问题这是我的代码

        for (MatchTeam team : players) {
        for (MatchPlayer player : team.getTeamPlayers()) {
            for (Location location : arena.getLocations()) {
                player.getPlayer().teleport(location);
            }
        }
    }

Object MatchTeam 持有一个玩家列表 (getTeamPlayers),而 getLocations 包含两个不同的位置

我已经用两个玩家测试了这段代码,他们被传送到同一个位置,但他们应该被传送到两个不同的位置

关于如何解决这个问题的任何想法?谢谢 !!

标签: javalistfor-loop

解决方案


您将每个玩家连续“传送”到每个位置,因为您遍历所有玩家,最后他们都最终到达他们被传送的最后一个位置 - 列表中的最后一个位置。如果你想传送,比如说,第一个玩家到第一个位置,第二个玩家到第二个位置等等,你可以使用这个代码:

int currentLocation = 0;
for (MatchTeam team : players) {
    for (MatchPlayer player : team.getTeamPlayers()) {
        player.getPlayer().teleport(arena.getLocations().get(currentLocation++));
        if (currentLocation == arena.getLocations().size()) {
            currentLocation = 0;
        }
    }
}

它遍历所有位置,然后在索引达到位置列表的大小时回绕,这是一个超出范围的索引值。


推荐阅读