Java中正在重置的实例变量
我试图制作一个程序,读取CSV文件,然后将读取的值放入2D双数组 名为DataMatrix的类包含2D数组作为私有实例变量(至少我认为是这样)。 现在我想找到这个数组的行平均值,但我注意到,当我调用计算平均值的方法时,数组被重置为它的默认值。 我相信这是初学者的错误,但感谢您的帮助 下面是DataMatrix类: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
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);
}