以下代码在循环中运行一次,但在第二次传递时,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
?没有其他代码引用它。
答案 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)
作为方法的参数。