2015-05-20 106 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