我正在读取一个传感器,并希望获得一定数量的消息的平均值,所以我正在对它们求和,并且我使用队列在添加新测量值时从总和中删除第一个测量值。
问题是队列没有像我预期的那样响应数组,它以某种方式充当指针,因此当原始值更新时,历史记录也会随之更改。
import java.util.Queue;
Queue<int[]> q = new LinkedList();
int[] t = new int[1];
int len = 3;
void setup()
{
for(int i=0;i<len;i++){
t[0]=len-i;
q.add(t);
}
for(int i=0;i<len;i++){
print(q.remove()[0]);print(';');
}
}
此代码的结果是:1;1;1;
预期结果为:3;2;1;
问题是,如何正确地将数组添加到队列?
您必须在 for 循环的每次迭代中实例化数组,否则它将与将被修改的引用相同
Queue<int[]> q = new LinkedList();
int len = 3;
void setup() {
for (int i = 0; i < len; i++) {
int[] t = new int[1];
t[0] = 5 - i;
q.add(t);
}
for (int i = 0; i < len; i++) {
print(q.remove()[0]);
print(';');
}
}