gpt4 book ai didi

java - 前缀平均算法中 arraylist 的越界错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:49:15 25 4
gpt4 key购买 nike

java.lang.IndexOutOfBoundsException: 将单个值添加到第一个 arrayList 时发生错误,以便执行前缀平均,这样 A 的值由

id 想指出的是,在此算法中使用数组是可行的,但是当尝试切换到数组列表时会出现问题。数组 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) 开始;那没有帮助。然后尝试用 s/(i+1) 的输出设置 a[i] 的内容仍然无济于事


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 指数的增加,我预计平均尺寸会增加

最佳答案

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

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

在你的例子中,你在索引 0 处插入,然后是 1 等等,所以你可以简单地使用 a.add(value)

关于java - 前缀平均算法中 arraylist 的越界错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58590786/

25 4 0