java - 如何在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 包含两个不同的位置
我已经用两个玩家测试了这段代码,他们被传送到同一个位置,但他们应该被传送到两个不同的位置
关于如何解决这个问题的任何想法?谢谢 !!
解决方案
您将每个玩家连续“传送”到每个位置,因为您遍历所有玩家,最后他们都最终到达他们被传送的最后一个位置 - 列表中的最后一个位置。如果你想传送,比如说,第一个玩家到第一个位置,第二个玩家到第二个位置等等,你可以使用这个代码:
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;
}
}
}
它遍历所有位置,然后在索引达到位置列表的大小时回绕,这是一个超出范围的索引值。
推荐阅读
- apache - Why Apache HTTPD is concatenating websocket url in rewrite engine?
- python - 由于使用python的段落中的连字符,如何通过删除连字符“-”来恢复拆分的单词
- reactjs - 使用 props 在父子组件之间进行 React js 通信,将数据从商店发送到产品详细信息组件
- r - 在 R 控制台中打印 Fortran write(*,*)
- c++ - 光仅在 2D 网格的一侧反射,在 Qt3D 中禁用剔除
- javascript - 在移动设备上显示内容并在桌面设备上隐藏
- ballerina - 在芭蕾舞演员中减去两个时间值
- vba - Excel Vba Loop IE - 未运行
- sql-server - 在一个表上创建的过滤统计信息用于 TSQL 查询中另一个表的基数估计
- excel - 计算 10 年后的人口