gpt4 book ai didi

Java 修改 foreach 中的元素

转载 作者:搜寻专家 更新时间:2023-10-31 08:15:33 29 4
gpt4 key购买 nike

我正在自学 Java;因此下面的代码除了用于学习/测试之外没有任何功能。

本质上,我试图在 foreach 循环中修改 Integer 数组的元素(即,将它们减半)。

我应该注意我不是重新排序、添加或删除元素;只需更改它们的值。

这是我的代码:

Logger.describe("Now copying half of that array in to a new array, and halving each element");
Integer[] copyArray = new Integer[DEFAULT_SAMPLE_SIZE / 2];
System.arraycopy(intArray, 0, copyArray, 0, DEFAULT_SAMPLE_SIZE / 2);
for (Integer x : copyArray) x /= 2;
Logger.output(Arrays.deepToString(copyArray));

然而,原始数组(intArray)是这样的:

[47, 31, 71, 76, 78, 94, 66, 47, 73, 21]

copyArray 的输出是:

[47, 31, 71, 76, 78]

因此,尽管数组的大小减半,但元素(整数)的值并没有减半。那我做错了什么?

谢谢

最佳答案

你不能在 foreach 循环中这样做。

for (int i=0; i<copyArray.length;i++)
copyArray[i] /= 2;

否则您不会将其分配回数组。 Integer 对象是不可变的,因此不能修改它们(尽管创建新对象)。

根据评论更新:请注意,虽然有一些事情正在发生,例如自动装箱/拆箱,大致如下:

copyArray[i] = Integer.valueOf(copyArray[i].intValue()/2);

关于Java 修改 foreach 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11032235/

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