100 個のランダムな (長い) 要素を持つ配列を作成するプログラムを作成しています。
主要
byte maxSize = 100;
HighArray arr = new HighArray(maxSize);
for (byte j =0; j < maxSize; j++)
arr.insert((long)(Math.random()*99));
HighArray クラスにある removeMax() メソッドを呼び出すと、
public long getMax()
{
long max = -1;
for (byte i =0; i < nElems; i++)
{
if(max < a[i])
max = a[i];
}
return max;
}
public long removeMax()
{
long max = getMax();
delete(max);
return max;
}
public boolean delete(long value)
{
int j;
for(j=0; j<nElems; j++) // look for it
if( value == a[j] )
break;
if(j==nElems) // can't find it
return false;
else // found it
{
for(int k=j; k<nElems; k++) // move higher ones down
a[k] = a[k+1];
nElems--; // decrement size
return true;
}
範囲外の配列を取得します: 100 例外。これは、配列が 100 要素の範囲外にあることを意味すると思いますが、要素を追加するのではなく要素を削除しているので意味がありません。最初にアレイを作成したとき、エラーは発生しませんでした。
私の IDE (Intellij IDEA) によると、main から removeMax() を呼び出すと問題が発生します。
エラーを誤解している場合は、お知らせください。詳細やコードが必要な場合は、お知らせください。