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