2015-05-20 133 views
0

下面的實現是否正確?練習Java - EDX

輸入:Oldrecords(GameRecord對象數組)和newRecords(GameRecord)

我將檢查oldRecords陣列中newRecord值。如果它不存在,並且oldrecord數組的長度小於10,我會將newRecord添加到更新後的數組中。

添加新記錄時,我得到異常的數組綁定。

if (size < 10){ 
      int length = size + 1; 
      updatedRecords = new GameRecord[length]; 
      System.arraycopy(oldRecords, 0, updatedRecords, 0, size); 
      updatedRecords[length]=newGameRecord(newRecord.getName(),newRecord.getLevel(),newRecord.getScore()); 
} 

回答

2

穿上它在size,不length

if (size < 10){ 
    int length = size + 1; 
    updatedRecords = new GameRecord[length]; 
    System.arraycopy(oldRecords, 0, updatedRecords, 0, size); 
    updatedRecords[size]=newGameRecord(newRecord.getName(),newRecord.getLevel(),newRecord.getScore()); 
} 
+0

是..更正..傻我!!! – ahairshi

0

我看到的是在oldRecords陣列尺寸將小於「大小」變量值的可能性.. 完整的堆棧跟蹤可以給你更多的細節

+0

這將產生一個**'ArrayStoreException' **,而不是一個'IndexOutOfBoundsException' – fabian

+0

獲得這隻 異常線程「main」 java.lang.ArrayIndexOutOfBoundsException:3 我存儲相同的數據類型相同的對象 – ahairshi