循环覆盖数组一旦完成

酒石

在下面的代码中,我尝试制作一个数组混洗器。这将使字符数组(charArray随机播放多次runTimes,并将每个数组存储在二维数组中shuffledArrays问题在于程序由于某种原因完成for循环时,会将所有数组设置为最后一个添加的数组。

任何帮助表示赞赏,谢谢。

import java.util.Random;

public class Testing {

    public static void main(String[] args) {

        char[] charArray = {'a', 'b', 'c', 'd', 'e', 'f'}; //Array to be shuffled
        int runTimes = 3; //Amount of shuffled arrays to create

        char[][] shuffledArrays = new char[runTimes][charArray.length];;


        for (int x = 0; x != runTimes; x++) {
            shuffledArrays[x] = shuffleArray(charArray);

            System.out.print("IN FOR LOOP: shuffledArrays[" + x + "] = ");
            System.out.println(shuffledArrays[x]);
        }

        System.out.print("OUT OF FOR LOOP: shuffledArrays[0] = ");
        System.out.println(shuffledArrays[0]);

        System.out.print("OUT OF FOR LOOP: shuffledArrays[1] = ");
        System.out.println(shuffledArrays[1]);

        System.out.print("OUT OF FOR LOOP: shuffledArrays[2] = ");
        System.out.println(shuffledArrays[2]);

    }

    private static char[] shuffleArray(char[] array) {
        Random rand = new Random();

        for (int x = 0; x < array.length; x++) {
            int randomIndexToSwap = rand.nextInt(array.length);

            char temp = array[randomIndexToSwap];

            array[randomIndexToSwap] = array[x];

            array[x] = temp;
        }

        return array;

    }

}
Arvind Kumar Avinash:

除了更改原始数组,您还需要更改数组的副本,例如

private static char[] shuffleArray(char[] inArray) {
    Random rand = new Random();
    char[] array = inArray.clone();
    for (int x = 0; x < array.length; x++) {
        int randomIndexToSwap = rand.nextInt(array.length);
        char temp = array[randomIndexToSwap];
        array[randomIndexToSwap] = array[x];
        array[x] = temp;
    }
    return array;
}

运行示例:

IN FOR LOOP: shuffledArrays[0] = dcfaeb
IN FOR LOOP: shuffledArrays[1] = edcbaf
IN FOR LOOP: shuffledArrays[2] = bfaced
OUT OF FOR LOOP: shuffledArrays[0] = dcfaeb
OUT OF FOR LOOP: shuffledArrays[1] = edcbaf
OUT OF FOR LOOP: shuffledArrays[2] = bfaced

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

一旦一个已完成的线程满足条件,如何取消其他线程

如何初始化变量,但是一旦完成,它的值就是最终的

一旦循环满足要求就停止检查条件

一旦超出索引,C#循环数组索引值将返回数组的开头

一旦结果不再更改,C#LINQ Aggregate方法是否完成执行?

一旦添加了固定道具,VuetifyJS工具栏就会覆盖内容

php foreach循环-获得第一名,一旦完成获得第二名,依此类推

一旦在Firebase存储上完成上传,我如何获得下载URL

如何实现CompletableFuture.allOf(),一旦任何期货失效,它就会异常完成?

一旦ngIf完成呈现html元素,如何在ngIf中触发指令?

一旦条件相同的循环完成第一次迭代,尝试从头开始重新开始循环

现在猫鼬一旦编译就无法覆盖模型

一旦PR完成,Jenkins将GitHub分支禁用

一旦require()完成,如何使以下代码执行?需要JS

一旦匹配2个匹配结果查询,SQL指示完成

一旦文档完成,Docusign就会以编程方式获取完整的文档

一旦在数组中找到匹配项,如何停止javascript循环

React / Redux-一旦上一个动作完成就触发动作

一旦满足条件,循环将无法终止

一旦 Spark Job 完成,持久化的 RDD 会发生什么?

一旦先前的并行步骤之一成功完成,触发阶段运行

一旦数组中的最后一个元素满足条件,如何使循环结束?

django - 一旦扩展块被覆盖

2 个不同大小的数组,一旦达到最大索引,就在循环中重用一个数组

一旦完成了两个承诺,就执行函数

一旦满足,如何继续循环 if 语句并且不再循环整个 if 和 else

Selenium:一旦元素被禁用,就停止循环

Python递归函数一旦完成就返回额外的“无”

为什么一旦我的内部递归完成,我的外部循环就不会继续?