ich habe ein ArrayList
und ich speichere Time, BID, ASK. Und ich kann den Durchschnitt von value2 für die Elemente 1-5 in innerer Schleife und wieder 2-6 und noch einmal 3-7 nicht finden.
Hier ist der Code (rs ist ein DB-Ergebnisiterator):
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 );
}
}
Antworten:
0 für die Antwort № 1Das erste Problem ist, dass der Liste nur dann Werte hinzugefügt werden, wenn i>6
. Die Änderung der Liste sollte außerhalb der sein if
.
Dann gibt es ein Problem mit dem arr
counter: es wird um 3 erhöht, weil Sie nur die ASK-Elemente hinzufügen möchten, aber die Schleife stoppt, wenn sie erreicht wird i
. Es sollte sein i*3
. Sie können auch von i==5
Anstatt von 7
, ob i
startet um 0
(kann nicht in Ihrem Code sehen).
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 );
}
}