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

Java数组查询程序存在重复数值时运行异常,如何调整代码修复?

问题根因

  • 原代码匹配到第一个符合条件的元素后就执行break跳出循环,无法继续查找后续重复的匹配值
  • 即便删除匹配逻辑里的break,后续的else if逻辑依然存在问题:只要当前遍历的元素不匹配、且已经到了数组最后一位,就会直接输出未找到提示,哪怕前面已经匹配到了结果也会触发该逻辑,且该处的break也会强制终止循环

修正方案

新增标记位记录是否找到过匹配值,遍历数组全程不提前终止,等所有元素遍历完成后再判断是否要输出未找到提示,修正后代码如下:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    int[] array = new int[10];
    array[0] = 6;
    array[1] = 2;
    array[2] = 8;
    array[3] = 1;
    array[4] = 3;
    array[5] = 0;
    array[6] = 9;
    array[7] = 8;

    System.out.print("Search for? ");
    int searching = Integer.valueOf(scanner.nextLine());
    // 标记位:记录是否找到过匹配值
    boolean found = false;
  
    for (int i = 0; i < array.length; i++) {
        if (searching == array[i]) {
            System.out.println(searching + " is at index " + i);
            found = true;
        }
    }   
    // 所有元素遍历完成后再判断是否未找到
    if (!found) {
        System.out.println(searching + " was not found!");
    }
    scanner.close();
}

注意:原代码定义的数组长度为10,仅给前8个元素赋了自定义值,剩余2个元素默认值为0,如果不需要这两个默认占位元素,可将数组长度改为8,避免搜索0时出现多余的索引结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:45:04