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

编程新手求助:数组线性搜索的函数传参与输入传递问题

解决线性搜索的代码问题

你的代码存在几个关键问题,下面逐一修正并解释:


1. 无法传递takeInput中的x

你的takeInput方法只能返回数组,没法同时返回读取到的目标值x。可以通过自定义简单数据类封装数组和目标值,或者直接在main方法中分步读取输入(更适合新手)。

2. linearSearch方法设计错误

线性搜索的核心是返回目标元素的索引位置(找到时),未找到则返回-1,而非返回原数组。另外你的方法缺少未找到时的默认返回值,会导致编译报错。

3. main方法未执行任何逻辑

需要在main里调用输入方法、搜索方法,并输出最终结果。


修改后的完整代码

import java.util.Scanner;

public class LinearSearchDemo {
    // 线性搜索:返回目标元素的索引,未找到返回-1
    public static int linearSearch(int arr[], int x) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == x) {
                return i; // 返回找到的索引
            }
        }
        return -1; // 未找到返回-1
    }

    // 读取输入:返回封装了数组和目标值的对象
    public static InputData takeInput() {
        Scanner s = new Scanner(System.in);
        InputData data = new InputData();
        
        System.out.print("请输入数组长度:");
        int N = s.nextInt();
        data.array = new int[N];
        
        System.out.print("请输入要搜索的目标数字:");
        data.target = s.nextInt();
        
        System.out.print("请输入数组的" + N + "个元素:");
        for (int i = 0; i < N; i++) {
            data.array[i] = s.nextInt();
        }
        return data;
    }

    // 封装输入数据的内部类
    static class InputData {
        int[] array;
        int target;
    }

    public static void main(String[] args) {
        // 获取输入数据
        InputData input = takeInput();
        // 执行线性搜索
        int resultIndex = linearSearch(input.array, input.target);
        
        // 输出结果
        if (resultIndex != -1) {
            System.out.println("目标数字在数组中的索引位置是:" + resultIndex);
        } else {
            System.out.println("数组中未找到目标数字");
        }
    }
}

简化版(无需自定义类)

如果觉得自定义类太复杂,也可以把输入逻辑直接写在main里:

import java.util.Scanner;

public class LinearSearchDemo {
    public static int linearSearch(int arr[], int x) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == x) {
                return i;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        
        System.out.print("请输入数组长度:");
        int N = s.nextInt();
        int[] arr = new int[N];
        
        System.out.print("请输入要搜索的目标数字:");
        int x = s.nextInt();
        
        System.out.print("请输入数组的" + N + "个元素:");
        for (int i = 0; i < N; i++) {
            arr[i] = s.nextInt();
        }
        
        int resultIndex = linearSearch(arr, x);
        if (resultIndex != -1) {
            System.out.println("目标数字在数组中的索引位置是:" + resultIndex);
        } else {
            System.out.println("数组中未找到目标数字");
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:40:25