gpt4 book ai didi

java - 方法意外地改变了我的数组的值

转载 作者:行者123 更新时间:2023-12-01 18:33:05 26 4
gpt4 key购买 nike

计算百分比的方法(来 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com