[英]IndexOutOfBoundsException when writing a list of players to a file
我正在为 OOP 分配工作,并坚持最后一步,即“将所有玩家写入具有类似输入文件格式的输出文件”。
我需要知道如何将 main 中的所有信息打印到与输入文件格式相同的输出文件中,我在这里使用 ArrayList。 当我打印名称和高度时它工作正常,但是当我想打印季节或得分时,会出现异常。
pw.write(t1.getName() + "; " + t1.getCity() + "\n");
for (int m = 0; m < p2.size(); m++) {
pw.print(t1.getPlayerList().get(m).getName() + "; " + t1.getPlayerList().get(m).getHeight() + "; ");
pw.println(t1.getPlayerList().get(m).getSeasonalRecords().get(m).getScores());
}
它运作良好,但当我写
pw.println(t1.getPlayerList().get(m).getSeasonalRecords().get(m).getScores());
出现一些错误,我得到的例外
线程“main”中的异常 java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 at java.util.ArrayList.rangeCheck(ArrayList.java:657) at java.util.ArrayList.get(ArrayList.java:433)
问题的根本原因在评论中描述:索引m
超过了季节性记录的数量,并且肯定可能需要另一个嵌套循环来打印季节性记录。
用for-each
索引替换for
循环可能会更好,以使代码更短、更易读且不易出现上述错误:
for (var player : t1.getPlayerList()) {
pw.println(player.getName() + "; " + player.getHeight() + "; ");
for (var seasonRecord : player.getSeasonalRecords()) {
pw.println(seasonalRecord.getScores());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.