【发布时间】:2016-04-07 06:02:25
【问题描述】:
我已经看到here 的答案,但我不确定它是否能回答我的问题。所以我有一个浮点类型的数组列表,其中包含一堆数字。我希望删除所有比前一个值多或少 30 的数字。所以,我比较 'n' 和 'n+1' 并删除 'n+1' if (n+1)>(30+n) ,反之亦然。我已经编写了以下代码,但我的解决方案不起作用。
for(int i = 0; i<hr_list.size()-1; i++)
{
Float x= hr_list.get(i);
Float y = hr_list.get(i+1);
if(y>(x+30.0f)||y<(x+30.0f))
{
hr_list.remove(i+1);
}
}
【问题讨论】:
-
也许你的意思是
if(y>(x+30.0f)||y<(x-30.0f))。虽然不清楚如果列表是 10 50 90 你想做什么。你是只删除 50,还是应该删除 90? -
问题是,我正在存储心率值,如果 HR(n+1) 为 30+HR,我将删除它,因为它可能不是正确的值。在您的示例中,例如,将删除 50 和 90,因为我的基线是 10。
-
在这种情况下,请遵循@Eran 的建议,但也要在
if语句中(在remove()之后)执行i--,以防止在此迭代中推进,您删除以下元素。 -
好的,这个呢? stackoverflow.com/questions/1196586/… 它说我必须使用“迭代器”。但在这种情况下,我的 for 循环本身就是在迭代,不是吗?