将多个整数数组输入 arrayList,然后打印每个数组
Inputting multiple arrays of integers into an arrayList and then printing each array
我希望创建动态数量的随机整数数组,然后将它们放入数组列表中。稍后我想分别使用这些数组中的每一个来测试快速排序功能。我在将对象 List[] 添加到 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));
}
}
}
您的代码的问题是您将 相同的数组 存储了 5 次到 ArrayList
,因此在生成期间打印时它打印了正确的数字,但后来你无法把它们弄出来。 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[] list = new int[size];
行移到 for 循环内,这样您实际上是在创建新数组而不是每次都使用相同的数组。
您现在可以用任何您喜欢的方式替换 main()
方法中的打印循环,例如快速排序测试。如果还有任何问题,请告诉我。
我希望创建动态数量的随机整数数组,然后将它们放入数组列表中。稍后我想分别使用这些数组中的每一个来测试快速排序功能。我在将对象 List[] 添加到 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));
}
}
}
您的代码的问题是您将 相同的数组 存储了 5 次到 ArrayList
,因此在生成期间打印时它打印了正确的数字,但后来你无法把它们弄出来。 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[] list = new int[size];
行移到 for 循环内,这样您实际上是在创建新数组而不是每次都使用相同的数组。
您现在可以用任何您喜欢的方式替换 main()
方法中的打印循环,例如快速排序测试。如果还有任何问题,请告诉我。