У меня проблема с обработкой данных с помощью приведенного ниже кода.Введенные данные обрабатываются из основного класса, хранятся в массиве и обрабатываются до этого класса.Затем данные отсеиваются для получения необходимой информации в частях массива для среднего усреднения.
Вводимые данные поступают в код с частотой 10 Гц, поэтому я должен ожидать, что 200 входных данных будут составлять 20 секунд (иш).Вместо этого я получаю несколько выходов по 200 входов в секунду, что заставляет меня думать, что сам код дублирует или тикает слишком быстро, вместо того, чтобы ждать следующего ввода.Я пытался найти помощь в прекращении дублирования через SF, но, похоже, не смог найти ни одного.
Я пытался реализовать таймер, чтобы увидеть, если это противодействует проблеме, но это не решает проблему ибудучи новичком в Java-кодировании, я не эксперт, и это сводит меня с ума, поэтому я ищу предложения или, если кто-то может придумать способы помочь исправить это, так как я действительно не уверен.
Спасибо
package TCPRequester;
import java.util.*;
public class AffdexArray {
private float valence = 0.0f;
private float previousValenceData = 0.0f;
int totalBuffer = 0;
int timerClicker = 0;
float valenceSum = 0f;
float valenceTotal = 0f;
private static final int FACEID_INDEX = 6;
private static final int VALENCE_INDEX = 17;
ArrayList<Float> valenceArray;
public AffdexArray()
{
//the float and name needs to go above public method
valenceArray = new ArrayList<Float>();
}
//change to if
public void valenceArray(String[] inArray)
{
do{
if(inArray[FACEID_INDEX].equals("1")){
//this needs to be a repeatable process
valence = Float.parseFloat(inArray[VALENCE_INDEX]);
//places the valence value into an Array list
valenceArray.add(valence);
//adds 1 a click to every input into that buffer
totalBuffer++;
timerClicker++;
} else {
timerClicker++;
}
} while(timerClicker <= 199);
//timer array set up to make it go every 10 seconds.
for(int i = 0; i<totalBuffer;i++)
{
valenceSum += valenceArray.get(i);
//add all values and divide by clicker amount. (mean?)
}
//after 10 seconds grab the values in buffer and clicker amount.
valenceTotal = valenceSum / totalBuffer;
//System.out.println("Valence Average = " + valenceTotal + "Previous Total: " + previousValenceData);
//Transfers float value into new variable
previousValenceData = valenceTotal;
//clear buffer and reset timer
valenceArray.clear();
totalBuffer = 0;
timerClicker = 0;
valenceTotal = 0;
}
}
Обновление - после разбивки и просмотра процесса с точками останова.
При переносе в этот класс проблема исходит из массива в цикле while do, который вызывает проблему и заполняетЯ надеялся, что массив будет заполнен 200 уникальными значениями, но вместо этого он заполняет его тем же значением, вместо этого, таким образом, 3 выводит в секунду вместо 1 каждые 20 секунд.
Есть ли процесс, который обеспечит егоуникальный ввод каждый раз, когда он проходит через do while или есть лучший способ попробовать?