У меня возникают некоторые проблемы при отладке моего кода, так как я не могу понять, где обновляется массив.Я просмотрел все мои файлы классов, и я полностью озадачен тем, что происходит.
На данный момент у меня есть настройка, посредством которой я читаю в файле csv и сохраняю содержимое в двумерном массиве (public static double[][] myArray
).Затем я передаю этот массив в метод всякий раз, когда пользователь нажимает кнопку.
Странно то, что он работает нормально с первого раза, однако при всех последующих нажатиях кнопки данные менялись, и я не могупонять почему.Я искал код, и там нет абсолютно никаких ссылок на исходный массив (т.е. myClass.myArray = newArray
), кроме того, где я передаю его в метод.
Есть ли причина, по которой это происходит?В качестве альтернативы, может кто-нибудь предложить способ отслеживать, когда переменная обновляется / изменяется?
Вот краткий обзор кода ...
Прочитайте в наборе данных CSV и сохраните его впеременная (ClassA
):
public static double[][] myDataset;
// ...
private static void readdDataset(String filePath)
{
CsvReader reader = new CsvReader();
myDataset = reader.readDataset(filePath, true);
}
Этот код используется для настройки действия кнопок:
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
new RunProgram().execute(); // create a swing worker to run the code in bg
}
});
Вот сокращенная версия кода в классе SwingWorker:
protected Void doInBackground()
{
Config cfgFile = someClass.createConfigFile();
someOtherClass.runMyProgram(cfgFile, ClassA.myDataset);
return null;
}
Наконец, вот код для запуска программы:
public static void runRegression(Config cfgFile, double[][] dataset)
{
// Print out the first line in the array to see if it is the same every time (it should be!)
for(double value : dataset[0])
{
System.out.print( value + " ");
}
System.out.println();
// Do some other stuff....
}