【发布时间】:2011-12-08 09:37:00
【问题描述】:
我想通过计算差异来过滤数组。代码如下:
public void compressData(List<Long> array){
for(int i = 0; i <= array.size(); i++){
if(Math.abs(array.get(i) - (array.get(i + 1))) >= 100){
newArray.add(array.get(i));
}
}
}
假设我有一个 [1, 3, 5, 10] 的数组。我希望数组中数字之间的范围至少为 5,因此在这种情况下,应该删除数字 3。所以我想比较 array[i] 和 array[i + 1]
上面的代码不起作用(我知道它实际上不起作用,我想我只是绝望了)因为array.get(i - 1) 或array.get(i + 1) 会给出 ArrayOutOfIndexException
提前谢谢你=)
【问题讨论】:
-
看看
ArrayIndexOutOfBoundsException是什么,然后尽量防止它发生。 -
@Steven Jeuris 我知道我正在访问非法数量的数组,因为
array.get(i - 1)将在数组的开头返回 array[-1] 而array.get(i + 1)将返回 array.size() + 1. 如果我错了,请纠正我。 -
对于
[1, 3, 5, 10]和范围>=5,答案将是[1, 10]
标签: java android arrays math filter