Java技术问题:在随机数组中查找指定元素
完善Java线性查找功能的解决方案
我帮你梳理下原代码里的几个小问题,然后给出完整的可运行版本,顺便解释关键部分:
原代码存在的问题
- 数组打印逻辑错误:增强for循环中你使用了
arr[i],但这里的i已经是数组的元素值而非索引,应该直接打印i; - Scanner方法调用不完整:
nextInt(...)缺少闭合括号,且不需要传入参数; - 缺失核心的线性查找逻辑:没有实现遍历数组匹配目标元素的代码。
完整修正后的代码
import java.util.Scanner; public class Linear_Search { public static void main(String[] args) { // 生成包含20个1-10随机整数的数组 int arr[] = new int[20]; for(int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 10) + 1; } // 打印生成的数组(修正了原打印错误) System.out.print("Array is: "); for(int element : arr) { System.out.print(element + " "); } System.out.println(); // 获取用户要查找的数字 System.out.println("Enter the number you want to search"); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); sc.close(); // 关闭Scanner避免资源泄漏 // 线性查找核心逻辑 boolean found = false; System.out.print("Found at index positions: "); for(int i = 0; i < arr.length; i++) { if(arr[i] == num) { System.out.print(i + " "); found = true; } } // 根据查找结果输出提示 if(!found) { System.out.println("None"); System.out.println("The number " + num + " is not present in the array."); } else { System.out.println(); System.out.println("The number " + num + " was found in the array."); } } }
关键部分说明
- 数组打印修正:改用
element作为循环变量名(更语义化),直接输出element,确保打印的是数组实际生成的元素; - 输入处理:补全
nextInt()调用,并添加sc.close()关闭输入流,避免资源泄漏; - 线性查找逻辑:
- 用
found布尔变量标记是否找到目标元素; - 遍历数组时记录所有匹配元素的索引(因为随机生成的数组可能有重复值);
- 最后根据
found的值输出对应的提示信息,提升用户体验。
- 用
内容的提问来源于stack exchange,提问作者Rishabh Jain
相关产品推荐
相关产品推荐

