首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数组中使用forEach后的错误值

在数组中使用forEach后的错误值
EN

Stack Overflow用户
提问于 2022-10-26 17:02:44
回答 1查看 34关注 0票数 -1

我正在做免费freecodecamp入门教程,我在Arraylist中的forEach函数有问题。下列守则

代码语言:javascript
复制
number1.forEach(number -> {
      number1.set(number1.indexOf(number), number * 2);
      
    });
    System.out.println(number1);

值是2,4,11,12,所以我希望得到4,8,22,24,而不是8,4,22,24。

有什么不对吗?

如上文所述。我试着用indexOf检查值和索引是否没有切换,因为我之前使用了排序函数,但它们似乎没有问题。除此之外,一切都顺利顺利。IDK

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-26 17:24:38

你从[2, 4, 11, 12]开始

在第一次迭代中,number = 2

然后你打电话给number1.set(number1.indexOf(2), 2 * 2)

我们现在有了[4, 4, 11, 12]

在第二次迭代中,number = 4

再一次,我们称之为number1.set(number1.indexOf(4), 4 * 2)

问题是:indexOf返回该值的第一个实例的索引!

所以,number1.indexOf(4) = 0,所以它将8放在索引0中,而不是索引1中。

正如注释中提到的@Tibrogargan,这是一个很好的例子,说明了为什么不应该在遍历数组时修改数组

当在number1中存在数字Y时,number1的代码将无法工作,以至于存在一个数字X,其中有Y = 2X

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74211604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档