我一直在为我的 java 课做一些作业,我对最后一部分有点困惑。基本上,家庭作业是教如何传递数组,最后一部分是提供一个传递数组和要搜索的数字的方法。
这就是我需要做的确切措辞:
编写并测试 findAll() 方法,该方法创建并返回一个新数组,其中包含 目标值每次出现的索引。返回长度为 0 的空数组 如果目标值没有出现,则不包含任何内容。
到目前为止我的代码是:
public int[] findAll(int arr[], int num)
{
int indexNum = 0;
int arrSize = 1;
int newArr[] = new int[arrSize];
while (indexNum < arr.length)
{
if (arr[indexNum] == num)
{
indexNum += indexNum;
for (int i = 0; i < arrSize; ++i)
newArr[i] = indexNum;
arrSize++;
}
}
return newArr;
}
public void printArray(int arr[])
{
//use for each loop here to use each array element
for (int e : arr)
System.out.print(e + " ");
System.out.println();
}
这编译得很好,但由于某种原因我得到了越界异常。
感谢您的帮助!
最佳答案
您收到越界异常,因为 newArr
最多只能容纳一个值。您需要创建一个足够大的数组来包含需要返回的最大数量的索引。保留一个单独的 int 变量来表示您实际找到的数量。循环结束后,创建一个大小完全正确的新结果数组,并使用 System.arraycopy 将找到的索引复制到结果数组中并返回该数组。
关于java - 如何创建一个方法,接受一个数组并查找某个数字的所有出现,并返回该数字出现的所有索引的新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7781606/