猿问

对于int数组的迭代

我一直在尝试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


繁华开满天机
浏览 166回答 3
3回答

临摹微笑

for&nbsp;(int&nbsp;i:&nbsp;array)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;i++; &nbsp;&nbsp;&nbsp;&nbsp;}在上面的示例中,i是数组中值之一的本地副本。仅对单次迭代有效。您实质上是在更改副本的值。

潇潇雨雨

比较两个片段:for (int i = 0; i < groups.length; i++) {&nbsp; &nbsp; groups[i]--;}和for (int g : groups) {&nbsp; &nbsp; g--;}第一部分将减少的每个元素groups。第二段将什么也不做。这是因为第二段等于for (int i = 0; i < groups.length; i++) {&nbsp; &nbsp; int g = groups[i];&nbsp; &nbsp; g--;}因此,您将获得一个新变量,将其递减并丢弃结果。
随时随地看视频慕课网APP

相关分类

Java
我要回答