gpt4 book ai didi

java - 从数组中查找数字的所有索引 (Java)

转载 作者:行者123 更新时间:2023-12-02 09:22:36 25 4
gpt4 key购买 nike

假设我有一个数组:

int [] I = { 1, 3, 6, 3, 7,3, 9, 3};
int value = 3;

我有一个 for 循环来跟踪该值出现的次数:

int counter = 0;
for(int x = 0; x < I.length; x++)
{
if(I[x] == value)
{
counter++;
}
}

我创建一个长度等于出现次数的新数组,它可以存储原始数组中出现的所有索引:

int [] index = new int [counter];

for(int x = 0; x < index.length; x++)
{
for(int i = 0; i<I.length; i++)
{
if(I[i] == value){
index[x] = i;
}
}
}

但是,当我打印索引数组时,当我想要所有索引时,我只会打印计数器等于的最后一个索引。

for(int i = 0; i<index.length; i++)
{
System.out.println(index[i]);
}

它只打印“7”(最后一个索引)3 次。我该如何解决这个问题,以便我拥有所有索引的数组?谢谢。

最佳答案

你的第二个for循环不应该嵌套;当您找到匹配项时,您应该只增加x。比如,

for (int i = 0, x = 0; i < I.length; i++) {
if (I[i] == value) {
index[x] = i;
x++;
}
}

假设您使用的是 Java 8+,您可以在数组中的索引范围上编写一个 filter() 。就像,

int[] index = IntStream.range(0, I.length).filter(i -> I[i] == value).toArray();
System.out.println(Arrays.toString(index));

关于java - 从数组中查找数字的所有索引 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58576525/

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