【发布时间】:2021-07-25 20:21:17
【问题描述】:
我会尽量保持简短和简洁。 我正在做一个项目,但我遇到了一个相当早的减速带。该项目涉及创建 10 个随机生成的整数数组(从 0 到 99),其中每个数组都有不同数量的元素(n)。在我们有几个整数池可以使用之后,我需要在所述数组上制定不同的排序算法——但我什至还没有做到那么远。 我已经成功地使 for 循环生成了一个数组,其中每个 int 都是随机的。然后循环以“n”的新值重新开始,并生成另一个随机整数数组。 我的代码如下:
import java.util.Arrays;
public class Testing {
public static void arrayGenerator() {
int[] elements = { 100, 250, 500, 750, 1000, 1250, 2500, 3750, 5000, 6250 }; // 10 different values for 'n' to work with.
int n; // Number of elements per array.
int i; // Index of n, ie. 0 = 100, 1 = 250, 2 = 500, etc.
int k; // Index of element in generated array.
//Generate a separate array of random numbers for each value of 'n'.
for (i = 0; i < elements.length; i++) {
n = elements[i];
int[] sortableArray = new int[n];
//Populate each array with random numbers ranging from 0 to 99.
for (k = 0; k < n; k++) {
sortableArray[k] = (int) (Math.random() * 100);
}
System.out.println(Arrays.toString(sortableArray));
}
}
public static void main(String[] args) {
Testing arrGen = new Testing();
arrGen.arrayGenerator();
}
}
'System.out.println(Arrays.toString(sortableArray))' 只是为了查看是否正在生成数字(并且正在生成正确数量的数字)。这就是我停下来的地方。如果我理解正确,每个后续数组都会覆盖前一个数组 - 所以到最后我没有 10 个数组,我有一个,其中 n = 5000。
我研究过使用 2D 数组、ArrayList 或 Map,但我的努力是徒劳的(即,我不太确定如何去做)。当我尝试形成 2D数组,我会尝试使用“(int)(Math.random()* 100)”来设置[k]的值,我会一直得到NullPointExceptionErrors。这意味着我做错了什么,但我不确定是什么。 在我的项目的后期,我需要能够获取所有这些数组,对它们进行排序(单独),记下对它们进行排序所花费的时间……等等。但现在我一开始就无法存储它们. 我确信解决方案很简单,但我最近被难住了,我似乎无法找到解决方案。如果有人可以指导我找到最佳解决方案,我将不胜感激! 感谢阅读!
编辑 - 为了更加清楚,这是我使用 2D 数组的微弱尝试(替换上面代码中的两个 for 循环):
for (i = 0; i < elements.length; i++) {
n = elements[i];
//Populate each array with random numbers ranging from 0 to 99.
for (k = 0; k < n; k++) {
int[][] sortableArray = new int[i][n];
sortableArray[i][k] = (int) (Math.random() * 100);
然而,结果是这样的:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at ie.gmit.dip.Testing.arrayGenerator(Testing.java:22)
at ie.gmit.dip.Testing.main(Testing.java:32)
错误指向此行的位置:
sortableArray[i][k] = (int) (Math.random() * 100);
我被难住了。非常感谢任何和所有的见解! 谢谢。
【问题讨论】: