Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将多个整数数组输入arrayList,然后打印每个数组_Java_Arrays_Arraylist_Quicksort - Fatal编程技术网

Java 将多个整数数组输入arrayList,然后打印每个数组

Java 将多个整数数组输入arrayList,然后打印每个数组,java,arrays,arraylist,quicksort,Java,Arrays,Arraylist,Quicksort,我希望创建一个动态的随机整数数组,然后将它们放入数组列表中。稍后,我想分别使用这些数组来测试快速排序功能。将对象列表[]添加到ArrayList时遇到问题 //Create dynamic amount of random arrays public static ArrayList<int[]> Randomizer(int arrays, int size, int seed){ ArrayList<int[]> Tests = new ArrayList&l

我希望创建一个动态的随机整数数组,然后将它们放入数组列表中。稍后,我想分别使用这些数组来测试快速排序功能。将对象列表[]添加到ArrayList时遇到问题

//Create dynamic amount of random arrays
public static ArrayList<int[]> Randomizer(int arrays, int size, int seed){
    ArrayList<int[]> Tests = new ArrayList<int[]>(arrays);


    int[] List = new int[size];
    for (int j = 0; j < arrays; j++){
        Random r = new Random(seed+j);  
        for(int i = 0; i < size; i++){
            List[i] = r.nextInt(5*size);//Multiplier for how big the numbers get
            System.out.print(List[i] + ",");
        }
        System.out.println();
        Tests.add(j, List);
    }


    return Tests;
}


public static void main(String[] args) {
int tests = 5;
int size = 4;
ArrayList<int[]> Test = Randomizer(tests,size,10); //1st = Number of Tests
                                                   //2nd = Number of Digits
                                                   //3rd = seed for Randomizer
for(int i = 0; i < Test.size(); i++){
System.out.println(Test.get(i));
}
}
//创建随机数组的动态数量
公共静态ArrayList随机化器(int数组、int大小、int种子){
ArrayList测试=新的ArrayList(数组);
int[]列表=新的int[大小];
对于(int j=0;j

}

代码的问题是,您将同一数组存储了5次,因此在生成过程中打印时,它会打印正确的数字,但之后无法将其取出。for循环的每次迭代都会覆盖先前生成的值

以下是更正后的代码:

private static ArrayList<int[]> randomizer(int arrays, int size, int seed){
    ArrayList<int[]> tests = new ArrayList<>(arrays);
    for (int j = 0; j < arrays; j++) {
        int[] list = new int[size];
        Random r = new Random(seed + j);
        for(int i = 0; i < size; i++) {
            list[i] = r.nextInt(5 * size); // Multiplier for how big the numbers get
        }
        tests.add(j, list);
    }
    return tests;
}

public static void main(String[] args) {
    int tests = 5;
    int size = 4;
    ArrayList<int[]> arrays = randomizer(tests, size, 10);
    for (int i = 0; i < arrays.size(); i++){
        int[] ints = arrays.get(i);
        for (int j = 0; j < ints.length; j++) {
            System.out.print(ints[j] + ",");
        }
        System.out.println();
    }
}
私有静态数组列表随机化器(int数组、int大小、int种子){
ArrayList测试=新的ArrayList(数组);
对于(int j=0;j
基本上你需要移动
int[]列表=新的int[size]for循环中的行,这样您实际上是在创建新数组,而不是每次都使用相同的数组


现在,您可以使用任意方法替换
main()
方法中的打印循环,如快速排序测试。如果仍然有任何问题,请告诉我。

我刚刚将您的代码放入Eclipse中,一切似乎都正常工作-当您
println(Test.get(I))
时,您是否对输出感到困惑?得到的结果是数组的内存位置。要查看主方法中的数字,您需要做一些不同的操作,但您得到的结果是数组。我想我的问题应该改为如何使用测试中数组数据库中的一个数组。例如,仅打印一个。然后我可以使用for循环来遍历所有数组,这取决于你想对这些数组做什么。要打印阵列,请查看:。将它们保存在一个列表中可以让你将它们全部传递给一个方法或构造函数,然后只需使用Test.get(i)来获取你想要的一个。@MarcinWisniowski你必须更清楚地解释你到底需要什么正如我在上面写的,我将使用数组来测试快速排序功能,以便对它们进行全面的批量检查,并找到最快的/etc。