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

Java中对ArrayList<Integer>[]调用get(int)报错如何修复

问题原因

错误提示已经明确问题本质:你调用get()方法的x、y是ArrayList<Integer>[]类型(即元素为ArrayList<Integer>的数组),Java的数组类型没有get()方法,仅支持通过[索引]语法访问数组内的元素,因此直接调用x.get(i)会触发编译错误。

同时你的代码中还存在另一处语法错误:double sum_x = 0, sum_y = 0, int n = 15;属于非法声明,同一行用逗号分隔的变量必须是相同类型,混合double和int类型声明会额外触发编译错误。

修复方案

根据你的实际业务需求,分为两种场景修复:

场景1:入参仅需单个ArrayList<Integer>(遍历单个数组列表的元素累加)

这是绝大多数场景下的需求,你只是把参数类型的语法写错了,删除参数名后的[]即可:

static void linreg(ArrayList<Integer> x, ArrayList<Integer> y) {
    double sum_x = 0, sum_y = 0;
    int n = 15; // 建议替换为x.size()/y.size(),避免硬编码长度导致索引越界
    for (int i = 0; i < n; i++) {
        sum_x += x.get(i);
        sum_y += y.get(i);
    }
    // 后续线性回归逻辑
}

场景2:确实需要传入ArrayList<Integer>类型的数组(x、y本身是数组,每个元素对应一个ArrayList)

如果你的业务逻辑确实需要接收ArrayList数组,那么要先通过数组下标取到对应的ArrayList对象,再调用get()方法取列表内的元素,示例如下:

static void linreg(ArrayList<Integer> x[], ArrayList<Integer> y[]) {
    double sum_x = 0, sum_y = 0;
    int n = 15;
    for (int i = 0; i < n; i++) {
        // 示例为取数组中第0个ArrayList的第i个元素,可根据业务调整数组下标
        sum_x += x[0].get(i);
        sum_y += y[0].get(i);
    }
    // 后续线性回归逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:27:00