我正在尝试在数组中搜索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");
}
}
谢谢。
答案 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");
}