找到数组元素的索引

时间:2018-04-27 09:15:40

标签: java arrays

我目前正在使用exercise练习数组。

我看了一下给定练习的解决方案,我不太了解那里发生的事情。

有人可以一步一步向我解释这个吗?

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));
    }
}

2 个答案:

答案 0 :(得分: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;
}

该方法接受两个参数,数组my_array和要搜索t的元素。

如果传递的数组是null

,则该方法直接中止
if (my_array == null) {
    return -1;
}

返回-1表示“找不到元素”。

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

int len = my_array.length;
int i = 0;
while (i < len) {
    ...
    i = i + 1;
}

在循环内部,该方法根据给定值检查当前索引处的数组值:

if (my_array[i] == t) {
    return i;
}

如果值匹配,则找到元素并返回当前索引i

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

备注

在Java变量名中应使用 camelCase 而不使用下划线,因此myArray将是一个更好的名称。名称本身也可以改进,values

方法本身可以更容易阅读:

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;
}

答案 1 :(得分:0)

您传入array和值以查找(t)到findIndex()

首先检查null,如果null

,则返回-1(即未找到)

然后将len设置为array

的长度

然后它从array

的位置0循环

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

如果匹配,则返回array

中的位置

它会一直迭代直到匹配,或者如果它没有,它会返回-1(再次,-1找不到)。