在Java Integer数组中获取下一个索引

时间:2015-10-21 15:46:48

标签: java arrays

我正在尝试在数组中搜索int,但是如果int出现多次,它只会给出它找到的第一个索引的位置。例如,如果数字2出现在索引3和7处。它将说明3在位置3处发现两次而不是在位置3和7处找到2。如何获得该数字也出现的位置的附加索引。

// random_integers is an array of random integers of size 10
Arrays.asList(random_integers);

for (int n : random_integers) {
    if (n == number) {
        System.out.println("Search Value: "
                + number
                + " found at location: "
                + Arrays.asList(random_integers).indexOf(n)
                + " in the unsorted array");
        }
    }

谢谢。

4 个答案:

答案 0 :(得分:2)

这是indexOf的行为。相反,使用传统的for循环并只使用当前的循环变量

for (int i = 0; i < random_integers.length; i++){
    if (random_integers[i] == number){
        System.out.println("Search Value: " + number + " found at location: " + i);
    }
}

答案 1 :(得分:0)

这是因为List#indexOf()不知道您打算将最后一个索引保留在最近找到项目的位置,因此每次都会返回第一个索引。您应该按索引迭代数组,并在发现事件时打印它:

for (int i; i < random_number.length; i++) {
    if (random_integers[i] == number) {
        System.out.format("Search Value: %s found at location: %s in the unsorted array", number, i);
    }
}

答案 2 :(得分:0)

indexOf()方法返回列表中指定元素第一次出现的索引,如果列表不包含该元素,则返回-1

传统的for循环可以在这里使用。

for(int i=0; i < random_integers.length;i++){
    if (random_integers[i] == number){
        System.out.println("number=" + number + " location=" + i);
    }
}

答案 3 :(得分:0)

正如所有人所说,使用传统的for loop代替。如果您想使用asList,请尝试以下代码:

   int size =  Arrays.asList(a).size();


 for (int i = 0 ; i < size ; i++){

     if (number == Arrays.asList(a).get(i))
 System.out.println("  Search Value: " + number +
            " found at location: " +        i +
            " in the unsorted array");
 }