java - 创建一个新数组,其中包含目标值每次出现的索引

标签 java arrays methods indexing

我正在尝试创建一个方法来创建一个新数组,其中包含目标值每次出现的索引。我必须为此使用 2 个循环。第一个计算目标出现的次数。然后创建新数组来保存这么多索引。然后第二个循环将索引放入新数组中。

我编写了下面的代码,但它抛出 java lang Array Out Of Bound Exception:5 ,上线result [ i ] = f [ i ] ;

public class FindAll {

    public FindAll() {
        int a[] = {7, 8, 9, 9, 8, 7};
        print(findAll(a, 7));
        print(findAll(a, 2));
    }

    public void print(int p[]) {
        System.out.print("{");
        int i;

        for (i = 0; i < p.length - 1; ++i) {
            System.out.print(p[i] + ", ");
        }

        System.out.print(p[i]);
        System.out.print("}");
    }

    public int[] findAll(int f[], int target) {
        int count = 0;
        for (int i = 0; i < f.length; ++i) {
            if (f[i] == target) {
                count++;
            }
        }
        int result[] = new int[count];
        for (int i = 0; i < f.length; ++i) {
            if (f[i] == target) {
                result[i] = f[i];
            }
        }
        return result;
    }
}

最佳答案

试试这个

int result[] = new int[count];
int index = 0;
for (int i = 0; i < f.length; i++)
{
    if (f[i] == target){
        result[index] = f[i];
        index++;
    }
}

关于java - 创建一个新数组,其中包含目标值每次出现的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26471588/

相关文章:

java - 如何解决在VScode中成功运行相同代码而在黑客等级中出现运行时错误问题?

java - 如何从 mouseClicked 传递参数?

php - 如何在选项中放入多个值并在mysql中处理它

c - 复制数组并修改其元素的函数

java - 我如何知道我的 LinkedList 是否已被订购?

java - 如何获取其他类的值?

c# - 字符串对数组

java - 元胞数组方法返回

Java:从现有字符串数组中删除一个项目

java - 类中的方法不能应用于给定类型