我有一个ArrayList
,我正在存储时间,BID,ASK。而且我无法在内循环中再次找到元素1-5的value2的平均值,并且再次找到2-6,并且3-7也是如此。
这是代码(rs是DB结果迭代器):
List<String> graphData=new ArrayList<String>();
while(rs.next()){
i++;
if(i>6){
graphData.add(rs.getString("TIME"));
graphData.add(df.format(rs.getFloat("BID")));
graphData.add(df.format(rs.getFloat("ASK")));
for (int arr=i-5; arr<i; arr+=3) {
sum = sum+graphData.get(arr+3));
}
avg = sum/5;
System.out.println(avg );
}
}
答案 0 :(得分:0)
第一个问题是仅在i>6
时才将值添加到列表中。列表的修改应该超出if
。
然后arr
计数器出现问题:它增加3,因为您只想添加ASK元素,但循环在到达i
时停止。它应该是i*3
。此外,如果i==5
从7
开始(在您的代码中无法看到),则可以从i
而不是0
开始。
List<String> graphData=new ArrayList<String>();
int i = 0;
while(rs.next()){
i++;
graphData.add(rs.getString("TIME"));
graphData.add(df.format(rs.getFloat("BID")));
graphData.add(df.format(rs.getFloat("ASK")));
if(i>=5){
double sum, avg = 0;
for (int arr=i*3-13; arr<i*3-1; arr+=3) {
sum = sum+graphData.get(arr));
}
avg = sum/5;
System.out.println(avg );
}
}