首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态更新数组

动态更新数组
EN

Stack Overflow用户
提问于 2014-03-18 14:34:20
回答 1查看 87关注 0票数 0

我是java编码的初学者,我面临着更新数组的一些复杂性。

我的问题是我有一个名为s1[]的数组,它由10个元素组成,我必须选择前3个元素,我必须存储在一个数组中,即max1[]数组,在下一个数组中,我必须从相同的数组中随机选择3个元素,即s1[],并将其存储在max6[]中,我需要在两个数组,即max1[]max6[]之间进行比较,以便存储匹配值。

我的代码看起来像这样(这里是f1 = 3)

代码语言:javascript
复制
        for (i1 = 0; i1 < f1; i1++) {
            max1[i1] = s1[i1];
            System.out.println("1st tree random leaf nodes   of phy m/c 1  at tree 1 :  " + max1[i1]);
            System.out.println(" \n ");
            max6[i1] = s1[(int) (Math.random() * f1)];
            System.out.println(" random leaf nodes  of  phy m/c 1  at tree 2: " + max6[i1]);
            System.out.println(" \n ");

        }

        for (int l1 = 0; l1 < f1; l1++) {
            for (int k1 = 0; k1 < f1; k1++) {
                if (max1[l1] == max6[k1]) {
                    c1[l1] = max1[l1];
                    k1++;
                    System.out.println("the value after crossover is:--------->" + c1[l1]);
                    break;
                }
            }
        }

现在我想要的是,我必须重复循环一些迭代,这样在下一次迭代中,第一次迭代中max1数组的值不应该重复,这意味着我必须从s1数组中永久删除元素,直到s1数组中包含零个元素为止

EN

回答 1

Stack Overflow用户

发布于 2014-03-18 15:01:26

我有两个建议给你,这取决于你喜欢哪一个。

首先,我建议将数组转换为列表,并从列表中删除必要的元素,然后再转换回数组。代码如下:

代码语言:javascript
复制
List<Double> list = new ArrayList<Double>(Arrays.asList(s1));
list.remove(i1);
s1 = list.toArray(new Double[0]);

其次,您可以将数组的特定元素移到后面,只迭代比长度小的一个位置。这需要您添加一个额外的int变量来记录数组中元素的数量或记录删除元素的数量,前者是更好的主意。代码如下:

代码语言:javascript
复制
double temp;
for(int i = 0; i < test.length - 1; i++){
    temp = s1[i];
    s1[i] = s1[i + 1];
    s1[i + 1] = temp;
}
nrE = nrE - 1;

这将要求您在第一个nrE循环之前有一个带有数组长度值(这里是10)的int。

这两种方法都应该在迭代结束时在for循环中实现。从我所看到的情况来看,我的第一个建议被使用最多。

注意:我可能误解了你想要实现的目标,但我相信你获取3个随机元素的代码是错误的。如果为f1=3,并且您在Math.random() * f1位置获取元素,则将始终获得0到3范围内的元素。

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

https://stackoverflow.com/questions/22471963

复制
相关文章

相似问题

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