gpt4 book ai didi

java - 如何在数组内的每个对象上调用方法?

转载 作者:行者123 更新时间:2023-11-30 08:32:59 26 4
gpt4 key购买 nike

Gist of my full code, 31 lines

我正在尝试转换 double -> BigDecimal,然后对存储在数组中的每个 BigDecimal 对象调用 setScale 方法。

    // convert double variables to BigDecimal inside of new BigDecimal array
BigDecimal[] ret = new BigDecimal[]{
new BigDecimal(area),
new BigDecimal(theta),
new BigDecimal(x),
new BigDecimal(y)
};
// setScale on each object
for (BigDecimal val: ret) {
val.setScale(2, RoundingMode.FLOOR);
}

但是当我打印出来时,很明显当我稍后打印每个对象时,没有对任何对象调用 setScale 函数。

数组中的对象是否在第二个 for 循环中没有被改变或保存?


通过回答建议进行更新和调整:

根据 Hovercraft 的回答,我将代码的最后一部分重写为:

    double[] vals = new double[]{area, theta, x, y};
BigDecimal[] ret = new BigDecimal[vals.length];
for (int i = 0; i < vals.length; i++) {
ret[i] = new BigDecimal(vals[i]).setScale(2, RoundingMode.FLOOR);
}

这正是我想要的。

最佳答案

BigDecimal 与 String 一样是不可变的,因此仅在 BigDecimal 对象 上调用 setScale(...) 对同一对象没有任何影响。对于要设置的比例,您必须将结果重新分配给 BigDecimal 变量。为此,我不会使用 for-each 循环,而是使用 for 循环:

for (int i = 0; i < ret.length; i++) {
ret[i] = ret[i].setScale(2, RoundingMode.FLOOR);
}

关于java - 如何在数组内的每个对象上调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39681419/

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