저는 1 차원 데이터 구조에 대해 좀 더 배우기 위해 Vector analog를 만들고 있습니다.두 번째 코드를 첫 번째 코드에 추가하고 예외를 얻음으로써 두 개의 벡터 아날로그를 병합합니다. 왜?
문제는 다음과 같습니다. my merge() 메서드 (기본적으로 append() 메서드의 확장)는 ArrayOutOfBoundsException을 던지고 있습니다.
MyVector 클래스 자체가 길기 때문에 관련 부분을 게시 할 것입니다.
클래스/객체 필드 : 추가]() 메소드와 함께
public class MyVector implements Cloneable
{
private Object[] data;
private static final int INITIAL_CAPACITY = 100;
private int size;
기본 (하나 현재) 생성자 :
public MyVector()
{
data = new Object[INITIAL_CAPACITY];
size = 0;
}
public void append(Object element)
{
if (size == data.length)
expand();
data[size++] = element;
}
병합() 메소드 :
public void merge(MyVector vector2)
{
for(int i = this.size; i < (this.size + vector2.size()); ++i)
this.append(vector2.data[i]);
this.size += vector2.size();
}
부르는 곳 :
vec.merge(vecCopy);
vec는 클래스의 앞부분에서 MyVector 객체로 생성되는 반면, vecCopy는 vec의 데이터에 대한 참조 사본입니다.
그게 관련 코드의 전부입니다. 나는 그 대답이 명백하다고 생각하지만, 어떤 이유에서인지 나는 그것을 볼 수 없다.
this.append (vector2.data [i]); - this.size가 아닌 0의 배열이어야합니다. –