繁体   English   中英

将玩家列表写入文件时出现 IndexOutOfBoundsException

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM