Java数组元素搜索:如何正确判断元素不存在(含代码问题)
Java数组查找功能修复
需求:实现Java程序,向用户索要待搜索数字,若数组包含该数字则输出其索引;若不包含则提示数字未找到。
现有代码能判断元素存在,但判断不存在的逻辑存在错误:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[] array = new int[8]; array[0] = 6; array[1] = 2; array[2] = 8; array[3] = 1; array[4] = 3; array[5] = 0; array[6] = 9; array[7] = 7; System.out.print("Search for? "); int searchValueInput = scanner.nextInt(); for (int loopValue = 0; loopValue < array.length; loopValue++) { if (searchValueInput == array[loopValue]) { System.out.println(searchValueInput + " is at index " + loopValue + "."); } else if (searchValueInput > array.length) { System.out.println(searchValueInput + " was not found."); } } } }
错误分析
- 判断
searchValueInput > array.length完全不合理:数组长度是8,但数组元素可以是任意整数,比如元素9大于8却存在于数组中,22大于8但不存在,这种逻辑完全不成立。 - 循环中每次不匹配都会触发else if,导致找不到元素时会重复输出多次"未找到"提示。
修复方案
用布尔变量标记是否找到目标元素,遍历完数组后再根据标记判断是否输出"未找到";另外找到元素后直接跳出循环,避免不必要的遍历:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[] array = {6, 2, 8, 1, 3, 0, 9, 7}; // 简化数组初始化 System.out.print("Search for? "); int searchValueInput = scanner.nextInt(); boolean found = false; for (int loopValue = 0; loopValue < array.length; loopValue++) { if (searchValueInput == array[loopValue]) { System.out.println(searchValueInput + " is at index " + loopValue + "."); found = true; break; // 找到后直接终止循环 } } // 遍历结束后统一判断是否未找到 if (!found) { System.out.println(searchValueInput + " was not found."); } } }
期望输出示例
Search for? 3 3 is at index 4. Search for? 9 9 is at index 6. Search for? 22 22 was not found.
内容的提问来源于stack exchange,提问作者belinyom
相关产品推荐
相关产品推荐

