如何在java中从ArrayList中找到Average

时间:2014-02-22 10:15:26

标签: java arraylist

我有一个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 );
  }
}

1 个答案:

答案 0 :(得分:0)

第一个问题是仅在i>6时才将值添加到列表中。列表的修改应该超出if

然后arr计数器出现问题:它增加3,因为您只想添加ASK元素,但循环在到达i时停止。它应该是i*3。此外,如果i==57开始(在您的代码中无法看到),则可以从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 );
  }
}