我正在尝试使用此逻辑扩展我的数组长度,但我仍然有outOfBounds异常..任何想法或评论帮助。看来我的逻辑不对 任何其他方式都可以做到这一点。或者对此进行任何更改都可以
public Student[] createNewArray(Student[] studentListArray){
for(int i = 0; i < studentListArray.length; i++) {
if (numberOfStudents == studentListArray.length) {
newStudentListArray = new Student[studentListArray.length * 2];
newStudentListArray = studentListArray;
}
}
return newStudentListArray;
}
答案 0 :(得分:1)
问题:
下面的行创建一个新数组,其长度是原始数据的两倍,然后将其分配给newStudentListArray变量:
newStudentListArray = new Student[studentListArray.length * 2]; // Line A
然后下面的行继续丢弃先前创建的未使用对象,并简单地将原始数组分配给同一个变量:
newStudentListArray = studentListArray; // Line B
因此,上面的B行完全取消了A行上的单词。
解决方案:不要执行第二行 - 不要丢弃新创建的数组。而是使用System.arraycopy将数据从原始数组复制到新数组中。例如
newStudentListArray = new Student[studentListArray.length * 2]; // Line A
System.arraycopy(studentListArray, 0, newStudentListArray, 0,
studentListArray.length);