为了账号安全,请及时绑定邮箱和手机立即绑定

前缀平均算法中数组列表的越界错误

前缀平均算法中数组列表的越界错误

哈士奇WWW 2024-01-05 16:46:17
java.lang.IndexOutOfBoundsException:将单个值添加到第一个 arrayList 时发生错误,以便执行前缀平均值,以便 A 的值通过以下方式计算我想指出,在此算法中使用数组是有效的,但是当尝试切换到数组列表时,是否会出现问题。数组 A A[i] 的内容A[0]     (X[0])/1A[1]     (X[0]+X[1])/2A[2]     (X[0]+X[1]+X[2])/3A[3]     (X[0]+X[1]+X[2]+X[3])/4A[4]     (X[0]+X[1]+X[2]+X[3]+X[4])/5A[5]     (X[0]+X[1]+X[2]+X[3]+X[4]+X[5])/6A[6]     (X[0]+X[1]+X[2]+X[3]+X[4]+X[5]+X[6])/7A[7]     (X[0]+X[1]+X[2]+X[3]+X[4]+X[5]+X[6]+X[7])/8A[8]     (X[0]+X[1]+X[2]+X[3]+X[4]+X[5]+X[6]+X[7]+X[8])/9A[9]     (X[0]+X[1]+X[2]+X[3]+X[4]+X[5]+X[6]+X[7]+X[8]+X[9])/10从 a.get(i) = s/(i+1); 开始 那没有帮助。然后尝试设置 a[i] 的内容与 s/(i+1) 的结果仍然无济于事public class prefixAverage{    public static void main(String args[]) {        ArrayList <Float> X = new ArrayList <Float>();        X.add(9f);        System.out.print(PrefixAverage(X));    }    public static ArrayList<Float> PrefixAverage(ArrayList<Float> X){        ArrayList <Float> a = new ArrayList <Float>();        float s = 0;        for (int i = 0; i<= X.size()-1;i++) {            s = s +X.get(i);            a.set(i,s/(i+1));            System.out.print(a.get(i)+", ");        }        return a;    }}我预计随着 A 指数的增加,平均尺寸也会增加
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

List::set现有元素设置为新值。在您的情况下,a是一个空列表,因此您不能使用该方法(或者您会收到异常)。

您可能打算改用a.add(i, value)它,它将在给定索引处插入一个元素(并将列表扩展一项)。

在您的情况下,您要在索引 0 处插入,然后是 1 等,因此您可以简单地使用a.add(value).


查看完整回答
反对 回复 2024-01-05
  • 1 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信