You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求分步解释查找数组元素索引的Java代码实现逻辑

分步讲解Java数组查找索引的代码

没问题,我来一步步拆解这段Java代码,帮你搞懂它的执行逻辑~

首先先补全你没写完的main方法,让代码可以直接运行,方便理解:

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[] testArray = {10, 20, 30, 40, 50};
        int target = 30;
        int index = findIndex(testArray, target);
        System.out.println("Target " + target + " is at index: " + index);
    } 
}

1. 类定义:GettingIndexOfAnArray

这是一个普通的Java类,专门用来封装查找数组中目标元素索引的功能。类里包含两个核心部分:静态工具方法findIndex(负责查找逻辑)和main方法(用来测试代码的入口)。

2. 核心查找方法:findIndex(int[] my_array, int t)

这个方法的作用是:找到目标值t在数组my_array中第一次出现的索引,如果数组为空或者找不到目标值,就返回-1。下面逐行拆解每一步的逻辑:

第1行:空数组防御校验

if (my_array == null) return -1; 
  • 首先做防御性检查:如果传入的数组是null(也就是根本没初始化的空引用),直接返回-1。这能避免后续代码因为操作空数组抛出NullPointerException,是Java开发中很常见的好习惯。

第2行:缓存数组长度

int len = my_array.length; 
  • 把数组的长度存到变量len里,这样后面循环的时候不用每次都调用my_array.length,既让代码更简洁,也能稍微提升一点性能(虽然对这个小方法来说影响微乎其微)。

第3行:初始化遍历指针

int i = 0; 
  • i是我们的遍历指针,从数组的**第一个元素(索引0)**开始。记住Java数组的索引是从0开始的,第一个元素对应索引0,第二个对应1,以此类推。

第4-7行:while循环遍历数组

while (i < len) { 
    if (my_array[i] == t) return i; 
    else i = i + 1; 
} 
  • 这个循环是整个方法的核心:
    • 循环条件i < len:只要指针还没走到数组的最后一个元素(因为索引最大是len-1),就继续遍历。
    • 每次取出数组第i个位置的元素my_array[i],和目标值t对比:
      • 如果相等,直接返回当前的i——这就是目标值所在的索引,因为我们是从左往右找第一个匹配的元素。
      • 如果不相等,就把指针i加1,继续检查下一个元素。

第8行:遍历结束未找到目标

return -1; 
  • 如果把整个数组都遍历完了,还是没找到和t相等的元素,就返回-1。这是Java里的通用约定:用-1表示“未找到”,因为数组的索引永远不会是负数。

3. main方法:测试入口

我补全的main方法是一个简单的测试示例:

public static void main(String[] args) { 
    int[] testArray = {10, 20, 30, 40, 50};
    int target = 30;
    int index = findIndex(testArray, target);
    System.out.println("Target " + target + " is at index: " + index);
}
  • 这里定义了一个测试数组testArray,目标值是30。调用findIndex方法后,会返回2(因为30在数组的第3个位置,索引从0开始),然后打印出结果。

几个常见测试场景的结果

  • 传入null数组:findIndex(null, 5) → 返回-1
  • 目标值在数组末尾:findIndex(new int[]{1,2,3}, 3) → 返回2
  • 目标值不存在:findIndex(new int[]{1,2,3}, 4) → 返回-1
  • 数组有重复元素:findIndex(new int[]{2,2,2}, 2) → 返回0(只返回第一个匹配的索引)

内容的提问来源于stack exchange,提问作者riceplant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:04:14