以下代码在整个循环中运行一次,但是在第二遍中,即使没有引用它,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
?没有其他代码引用它。 最佳答案
为何更改方程式?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)
作为方法的参数。