java - 如何创建一个方法,接受一个数组并查找某个数字的所有出现,并返回该数字出现的所有索引的新数组

标签 java arrays loops foreach

我一直在为我的 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/

相关文章:

c - 输入上下 2 的幂

android - 如何遍历字符串数组并添加到 Realm 数据库?

windows - 如何使用批处理脚本对目录中的每个文件执行某些操作

java - 如何访问 Angular js 常量内的 JSP 变量

java - 如何从 java/kotlin 中的 "RemoteCall<BigInteger>"返回类型函数中提取数据?

java - Java中数组初始值设定项中带有尾随逗号的数组

CUDA 将充满数据的数组从主机复制到设备

java - 如何通过 JFileChooser 将 Icon 对象保存到文件中?

java - 理论上 'structs' 的数组在 Java 中是可行的吗?

Javascript多维数组打印单个字母