计算百分比的方法(来 self 不想更改但确实如此的数组):
private float values[] = { AGREE, DISAGREE };
private float[] calculateData(float[] data) {
// TODO Auto-generated method stub
float total = 0;
for (int i = 0; i < data.length; i++) {
total += data[i];
}
// 180 is the amount of degrees of the circle - setting it up to half
// circle 360 means full circle
for (int i = 0; i < data.length; i++) {
data[i] = 180 * (data[i] / total);
}
调用方法:
float[] degrees = calculateData(values);
如果我在调用此方法之前记录数组的值,我会得到 1.0,1.0,但在调用方法之后我会得到 90.0,90.0,为什么?如果我不更改values[]
。
我知道它发生在该方法中,因为当我删除它时,我得到 1.0,1.0 (我真正想要得到的)
编辑:
感谢您的回答,所以如果我理解正确的话:如果方法的参数发生更改,则调用方法时设置为参数的对象也会发生更改。
最佳答案
您正在此处修改数组:data[i] = 180 * (data[i]/Total);
您在函数的参数中获取数组的地址,而不是它的副本,因此如果您在函数中修改它,它将修改您在隔离 calculateData
时传递的数组功能。
关于java - 方法意外地改变了我的数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23271227/