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

java.lang.IndexOutOfBoundsException:将单个值添加到第一个 arrayList 时发生错误,以便执行前缀平均值,以便 A 的值通过以下方式计算

我想指出,在此算法中使用数组是有效的,但是当尝试切换到数组列表时,是否会出现问题。数组 A A[i] 的内容

A[0]     (X[0])/1

A[1]     (X[0]+X[1])/2

A[2]     (X[0]+X[1]+X[2])/3

A[3]     (X[0]+X[1]+X[2]+X[3])/4

A[4]     (X[0]+X[1]+X[2]+X[3]+X[4])/5

A[5]     (X[0]+X[1]+X[2]+X[3]+X[4]+X[5])/6

A[6]     (X[0]+X[1]+X[2]+X[3]+X[4]+X[5]+X[6])/7

A[7]     (X[0]+X[1]+X[2]+X[3]+X[4]+X[5]+X[6]+X[7])/8

A[8]     (X[0]+X[1]+X[2]+X[3]+X[4]+X[5]+X[6]+X[7]+X[8])/9

A[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 指数的增加,平均尺寸也会增加


哈士奇WWW
浏览 99回答 1
1回答

慕慕森

List::set将现有元素设置为新值。在您的情况下,a是一个空列表,因此您不能使用该方法(或者您会收到异常)。您可能打算改用a.add(i, value)它,它将在给定索引处插入一个元素(并将列表扩展一项)。在您的情况下,您要在索引 0 处插入,然后是 1 等,因此您可以简单地使用a.add(value).
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java