• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

arrays - Java Modifying Elements in a foreach

[复制链接]
菜鸟教程小白 发表于 2022-6-1 20:09:43 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

I'm learning Java on my own; and therefore the code below has no function other than for learning/testing.

Essentially I'm trying to modify the elements of an Integer array (namely, halving them) whilst in a foreach loop.

I should note that I'm not re-ordering, adding, or deleting elements; simply changing their values.

Here is my code:

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));

However, the original array (intArray) is this:

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

And the output of copyArray is:

[47, 31, 71, 76, 78]

So although the array has been halved in size, the elements (Integers) haven't also been halved in value. So what am I doing wrong?

Thank you



Best Answer-推荐答案


You can't do that in a foreach loop.

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

Else you are not assigning it back into the array. Integer objects are immutable by the way so can't modify them (creating new ones though).

Updated from comment: Beware though that there are a few things going on, autoboxing/unboxing for example, roughly:

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

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap