0

我正在创建一个 Vector 类比来了解更多关于一维数据结构的信息。

问题是这样的:我的 merge() 方法(基本上是我的 append() 方法的扩展)正在抛出 ArrayOutOfBoundsException。

MyVector 类本身很长,所以我将发布相关部分。

类/对象字段:

public class MyVector implements Cloneable 
{
   private Object[] data;
   private static final int INITIAL_CAPACITY = 100;
   private int size;

默认(目前只有一个)构造函数,以及 append() 方法:

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 中数据的引用的副本。

这就是所有相关的代码。我想答案是显而易见的,但无论出于何种原因,我都看不到它。

4

1 回答 1

0

for(int i = this.size; i < (this.size + vector2.size()); ++i)

索引i可以vector2.size()越界,即索引越界。

于 2013-09-26T00:14:10.343 回答