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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:23:35