0

1 次元データ構造についてもう少し学習するために、Vector アナログを作成しています。

問題はこれです: 私の merge() メソッド (基本的に私の append() メソッドの拡張です) が ArrayOutOfBoundsException をスローしています。

MyVector クラス自体が長いので、関連部分を掲載します。

クラス/オブジェクト フィールド:

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

デフォルトの (現在は 1 つのみ) コンストラクターと append() メソッド:

public MyVector()
{
    data = new Object[INITIAL_CAPACITY];
    size = 0;
}
public void append(Object element)
{
    if (size == data.length)
        expand();
    data[size++] = element;
}

merge() メソッド:

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