Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查代码(java-eclipse)中变量的更新/更改位置?_Java_Arrays_Debugging_Variables - Fatal编程技术网

如何检查代码(java-eclipse)中变量的更新/更改位置?

如何检查代码(java-eclipse)中变量的更新/更改位置?,java,arrays,debugging,variables,Java,Arrays,Debugging,Variables,我在调试我的代码时遇到了一些问题,因为我无法确定数组的更新位置。我已经浏览了我所有的班级档案,我完全搞不懂到底发生了什么 目前我有一个设置,可以读取csv文件并将内容存储在2D数组中(publicstaticdouble[]myArray)。然后,每当用户按下按钮时,我就将这个数组传递给一个方法 奇怪的是,它在第一次就可以正常工作,但是在随后的所有点击按钮时,数据都发生了变化,我不知道为什么。我已经搜索了代码,除了我将其传递到方法中的地方之外,绝对没有对原始数组(即myClass.myArray

我在调试我的代码时遇到了一些问题,因为我无法确定数组的更新位置。我已经浏览了我所有的班级档案,我完全搞不懂到底发生了什么

目前我有一个设置,可以读取csv文件并将内容存储在2D数组中(
publicstaticdouble[]myArray
)。然后,每当用户按下按钮时,我就将这个数组传递给一个方法

奇怪的是,它在第一次就可以正常工作,但是在随后的所有点击按钮时,数据都发生了变化,我不知道为什么。我已经搜索了代码,除了我将其传递到方法中的地方之外,绝对没有对原始数组(即
myClass.myArray=newArray
)的引用

这有什么原因吗?或者,是否有人可以建议一种跟踪变量何时更新/更改的方法

下面是代码的简要概述

读入csv数据集并将其保存在变量中(
ClassA
):

这是用于设置按钮操作的代码:

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....
}

将此数组传递给的每个方法都有机会更改其内容。您的数组是。

从大纲或项目视图中,右键单击变量,然后选择“切换观察点”

(您还可以设置条件断点,这很方便。)


不需要对原始数组进行引用,对静态(可变)对象的任何引用都可以操纵其内容。

因此,我不能确定到底发生了什么,因为您似乎在处理2d对象和类,我对它们有非常基本的理解

然而,听起来您的问题并不是真正的2d方面,而是它所使用的数据的存储。听起来你的按钮是个问题,或者是在按下按钮之前,因为你还没有给我们代码,我想没有人能帮你

尝试为按钮创建一个临时旁路,这样它只会自动触发一次,然后看看会发生什么

至于调试,通常的方式是

System.out.println("Array changed " + myArray[0] +" "+ myArray[1]  );
这将在控制台上打印一行

数组已更改14
(如果
myArray[0]==0
myArray[1]==4


如果没有看到一些代码,我就无法再帮助您了,我想其他人也帮不上忙。

您可以发布您的有问题的代码吗?SSCCEplease@reseter我为你添加了一些代码。嗨,戴夫,这真的很有用,谢谢你!我刚刚试过,似乎使用变量的唯一点就是我提到的两个(用它调用方法&第一次将csv文件读入)。我不明白出了什么问题!感谢您的帮助-我的问题在于我制作阵列副本的方式。我现在已经能够解决这个问题。再次感谢!
System.out.println("Array changed " + myArray[0] +" "+ myArray[1]  );