Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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中正在重置的实例变量_Java_Arrays_Instance Variables - Fatal编程技术网

Java中正在重置的实例变量

Java中正在重置的实例变量,java,arrays,instance-variables,Java,Arrays,Instance Variables,我试图制作一个程序,读取CSV文件,然后将读取的值放入2D双数组 名为DataMatrix的类包含2D数组作为私有实例变量(至少我认为是这样)。 现在我想找到这个数组的行平均值,但我注意到,当我调用计算平均值的方法时,数组被重置为它的默认值。 我相信这是初学者的错误,但感谢您的帮助 下面是DataMatrix类: public class DataMatrix{ private String rawInput; private double[][] finalArr; private Stri

我试图制作一个程序,读取CSV文件,然后将读取的值放入2D双数组

名为DataMatrix的类包含2D数组作为私有实例变量(至少我认为是这样)。 现在我想找到这个数组的行平均值,但我注意到,当我调用计算平均值的方法时,数组被重置为它的默认值。 我相信这是初学者的错误,但感谢您的帮助

下面是DataMatrix类:

public class DataMatrix{

private String rawInput;
private double[][] finalArr;
private String[] rows;
private String[][] arr;

public DataMatrix(){
    rawInput = "";
    rows = new String [1];
    arr = new String [1][1];
    finalArr = new double[arr.length][arr[0].length];
}

public void setInput(String input){
    rawInput = input;
}

public void setDoubleArray(){
    rows = rawInput.split("\n");
    arr = new String [rows.length][];

//Temporarly hold the values in the enhanced for loop, and re-split into the 2D array
int counter = 0;
for(String rowData: rows){
    arr[counter] = rowData.split(",");
    counter++;
}

//Convert the string to a double
double[][] finalArr = new double[arr.length][arr[0].length];

for (int i = 0; i < arr[0].length; i++){
    finalArr[0][i] = Double.valueOf(arr[0][i]);
}
for (int i = 0; i < arr.length; i++){
    finalArr[i][0] = Double.valueOf(arr[i][0]);
}
//Debug
System.out.println(finalArr[0][0]+ " Size: "+ finalArr.length);
}

public double calcRowAvg(){
    //Debug
    System.out.println(finalArr[0][0] + " Size: "+ finalArr.length);
    return 0;
}

很抱歉出现了巨大的粘贴。

欢迎使用堆栈溢出!看起来您需要学习使用调试器。请随便吃点。如果你以后还有问题,请随时提供更多详细信息。在方法
setDoubleArray
中,您定义了一个局部变量
finalArr
,它隐藏了实例变量
finalArr
,因此当
setDoubleArray
返回时,您对局部变量
finalArr
所做的任何更改都将丢失。天哪,有时候事情就在眼前,谢谢你的帮助
public class DataRun{
public static void main(String[] args){

    //Make sure the user passed the command line argument
    if (args.length != 1){
        System.out.println("Assignment1 takes exactly one command-line argument.");
        System.out.println("Usage: java Assignment1 some_file.csv");
        System.exit(0);
    }

    //Set filename to arguement
    String csvFileName = args[0];

    //Instantiate file reader
    CSVReader fileReader = new CSVReader();

    //Read the file into a string
    String text = fileReader.readFile(csvFileName);

    //Start array processing
    DataMatrix CSVCalc = new DataMatrix();

    CSVCalc.setInput(text);
    CSVCalc.setDoubleArray();

    double rowAvg = CSVCalc.calcRowAvg();
    double colAvg = CSVCalc.calcColAvg();

    System.out.println("Row: " + rowAvg + " Col: " + colAvg);
}