Java数组值被放入错误的数组中

时间:2014-12-22 13:48:19

标签: java arrays

以下代码在循环中运行一次,但在第二次传递时,theEquation已经更改了数据,即使没有引用它。

String[] theEquation = breakdown(theequation);
double[] yValues = new double[400];

for(int i=0; i < bitmapx; i++){
    Double v = xmin + (xstep * i);
    yValues[i] = Double.parseDouble( solveArrayX( theEquation , v ) );
}

例如,第一次通过for循环,theEquation将有{ "x", "^", "2" }。下一次将是{ previousCalculatedAnswer, null, null }

为什么要更改theEquation?没有其他代码引用它。

1 个答案:

答案 0 :(得分:0)

  

为什么要更改等式?

theEquation不包含数组,它包含对数组的引用。

执行solveArrayX( theEquation , v )时,您将此引用传递给更改数组的solveArrayX方法。见lines 120 and 121

public String solveArrayX(String[] tA, double d){
    ...

        tA[i] = tA[i+2];
        tA[i+2] = "";
    ...
}

如果您想避免这种情况,可以使用Arrays.copyOf(theEquation, theEquation.length)作为方法的参数。