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
相关产品推荐
相关产品推荐

