gpt4 book ai didi

java - "Exception in thread "main "java.lang.ArrayIndexOutOfBoundsException: 100"in数组数据结构程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:17 27 4
gpt4 key购买 nike

我正在编写一个程序来创建一个包含 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() 时会出现问题。

如果我误解了错误,请让我知道并为我澄清。如果需要更多详细信息或代码,请告诉我。

最佳答案

根据您的代码,问题出在这里:

a[k] = a[k+1];

改为这样做:

a[k] = a[k-1];

您将 J 的值赋给 K,当 J 处于最后一次迭代(100)时,您将其加 1,从而得到值 101 ,这比分配的 100 多。

关于java - "Exception in thread "main "java.lang.ArrayIndexOutOfBoundsException: 100"in数组数据结构程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18970395/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com