为了账号安全,请及时绑定邮箱和手机立即绑定

对于int数组的迭代

对于int数组的迭代

繁华开满天机 2021-04-07 15:15:32
我一直在尝试for对数组进行尝试,并尝试使用数组迭代。为什么这两个代码没有做完全相同的事情?第一个完美地工作,第二个是我尝试使其看起来更干净。/** * resetSelectionOn *  * Module permettant de reinitiliser la selection d'une case et de supprimer * le groupe dont elle fait partie *  * @param emplacement */public void resetSelectionOn(int emplacement) {    int group = groupID[emplacement];    for (int i = 0; i < groupID.length; i++) {        if (groupID[i] == group) {            groupID[i] = 99;            selected[i] = false;        }    }    for(int i = 0; i < groupID.length; i++) {        if (groupID[i] > group) {            groupID[i]--;        }    }    **// This is the one that isn't working and is suppose to do the exact same thing as the one right over**    for ( int i : groupID) {        if(i > group)            i--;    }*/    listeGroupCree.remove(group);    selected[emplacement] = false;    nbGroupCree--;}有人可以向我解释这两个代码之间的区别吗?谢谢!group是一个选项卡,其中包含数字所在的组的编号。示例:我随机生成了6位数字。假设[1] [2] [3] [4] [5] [6] groupID是一个ArrayList,告诉我在巫婆组中此数字已被使用。例如,如果2和3通过成为同一组的一部分来创建数字23(假设2),则此代码是我的代码,用于重置该组的选择。该组引用了它在ListeGroupCree中的位置。如果23是组号2,则ListeGroupCree [2]将返回23
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

for (int i: array) {
    i++;
    }

在上面的示例中,i是数组中值之一的本地副本。仅对单次迭代有效。您实质上是在更改副本的值。


查看完整回答
反对 回复 2021-04-21
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

比较两个片段:


for (int i = 0; i < groups.length; i++) {

    groups[i]--;

}


for (int g : groups) {

    g--;

}

第一部分将减少的每个元素groups。第二段将什么也不做。这是因为第二段等于


for (int i = 0; i < groups.length; i++) {

    int g = groups[i];

    g--;

}

因此,您将获得一个新变量,将其递减并丢弃结果。


查看完整回答
反对 回复 2021-04-21
  • 3 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信