У мене є ArrayList
і я зберігаю Time, BID, ASK. І я не в змозі знайти середнє значення2 для елементів 1-5 у внутрішньому циклі і знову 2-6, і знову 3-7, як мудро.
Ось код (rs - ітератор результатів БД):
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 для відповіді № 1Перша проблема полягає в тому, що значення додаються до списку лише тоді, коли 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 );
}
}