我正在尝试创建一个方法来创建一个新数组,其中包含目标值每次出现的索引。我必须为此使用 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/