Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找数组元素的索引_Java_Arrays - Fatal编程技术网

Java 查找数组元素的索引

Java 查找数组元素的索引,java,arrays,Java,Arrays,我目前正在使用一个数组来练习数组 我看了一下给定练习的解决方案,我不太明白那里发生了什么 有人能一步一步地给我解释一下吗 public class GettingIndexOfAnArray { public static int findIndex(int[] my_array, int t) { if (my_array == null) return -1; int len = my_array.length; int i = 0;

我目前正在使用一个数组来练习数组

我看了一下给定练习的解决方案,我不太明白那里发生了什么

有人能一步一步地给我解释一下吗

public class GettingIndexOfAnArray {

    public static int findIndex(int[] my_array, int t) {
        if (my_array == null) return -1;
        int len = my_array.length;
        int i = 0;
        while (i < len) {
            if (my_array[i] == t) return i;
            else i = i + 1;
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] my_array = {25, 14, 56, 15, 36, 56, 77, 18, 29, 49};
        System.out.println("Index position of 25 is: " + 
        findIndex(my_array, 25));
        System.out.println("Index position of 77 is: " + 
        findIndex(my_array, 77));
    }
}
公共类获取索引数组{
公共静态int findIndex(int[]my_数组,int t){
if(my_array==null)返回-1;
int len=我的数组长度;
int i=0;
而(我
数组和要查找的值(
t
)传递到
findIndex()

首先,它检查
null
,如果
null

然后将
len
设置为
数组的长度

然后它从
数组的位置0开始循环

在每次迭代中,它检查
t
t
是您要查找的值)的位置是否与
数组中的位置匹配(第一次迭代是0,数组的第一个元素

如果它们匹配,则返回
数组中的位置

它不断迭代,直到匹配为止,如果不匹配,则返回-1(同样,未找到-1)。

解释 该方法从头到尾搜索数组,直到找到元素为止

让我们仔细看看这个方法:

public static int findIndex(int[] my_array, int t) {
    if (my_array == null) {
        return -1;
    }

    int len = my_array.length;
    int i = 0;
    while (i < len) {
        if (my_array[i] == t) {
            return i;
        } else {
            i = i + 1;
        }
    }
    return -1;
}
返回
-1
表示“未找到元素”

接下来,该方法设置一个循环,该循环应该从开始到结束进行迭代:

int len = my_array.length;
int i = 0;
while (i < len) {
    ...
    i = i + 1;
}
如果值匹配,则找到元素并返回当前索引
i

如果没有,循环将继续迭代。如果循环结束,则无法找到该值,因为已检查所有元素。因此,该方法最终返回
-1


笔记 在Java中,变量名应使用camelCase且不使用下划线,因此
myArray
将是一个更好的名称。名称本身也可以改进,那么
值如何

可以使方法本身更易于阅读:

public static int findIndex(int[] values, int valueToSearch) {
    // No values to search through
    if (values == null || values.length == 0) {
        return -1;
    }

    // Iterate all values
    for (int i = 0; i < values.length; i++) {
        if (values[i] == valueToSearch) {
            return i;
        }
    }

    // All values were iterated, value was not found
    return -1;
}
公共静态int findIndex(int[]值,int valueToSearch){
//没有要搜索的值
if(value==null | | values.length==0){
返回-1;
}
//迭代所有值
对于(int i=0;i
非常简单:在数组上运行,直到找到元素
t
,然后返回找到该元素的索引
i
(如果未找到,则返回-1)。
findIndex
方法只是扫描数组以查找值。如果您不理解这一点,那么您可能需要学习Java教程?哪一部分给你带来麻烦?你希望它做什么?在数组中搜索/查找是次优选择。这座建筑不是为这个设计的。唯一的方法是从开始到结束迭代,直到找到为止。如果需要fast
contains
,请使用不同的结构,如hashed once。
if (my_array[i] == t) {
    return i;
}
public static int findIndex(int[] values, int valueToSearch) {
    // No values to search through
    if (values == null || values.length == 0) {
        return -1;
    }

    // Iterate all values
    for (int i = 0; i < values.length; i++) {
        if (values[i] == valueToSearch) {
            return i;
        }
    }

    // All values were iterated, value was not found
    return -1;
}