簡體   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