2 回答
TA贡献1862条经验 获得超6个赞
看起来您在每次迭代时都对整个数组进行排序。设置值后尝试对数组进行排序和打印。
public class test {
public static void main(String[] args) {
int[] list = new int[10];
Random rand = new Random();
for (int i = 0; i < list.length; i++) {
list[i] = rand.nextInt(100);
}
Arrays.sort(list);
for (int i = 0; i < list.length; i++) {
System.out.println(list[i]);
}
}
}
如果你调试你的应用程序,你就会明白为什么每次都会得到 5 个 0。
int[] list = new int[10];生成 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 的数组,并在打印之前对数组进行排序。因此,前 5 个 ( list[0], list[1], list[2]...) 将是0,而list[6] list[7].. 将是rand.nextInt(100)
TA贡献1817条经验 获得超6个赞
问题是您在用随机数填充数组时对数组进行排序。
这不起作用的原因是因为 int 数组元素的初始值为 0 并且您的数组在您第一次初始化时将如下所示:
[0, 0, 0, 0, 0, ...]
然后在循环的第一轮中,假设生成了 5 作为随机数,并且第一个元素被初始化为 5。数组现在看起来像这样:
[5, 0, 0, 0, 0, ...]
然后在循环继续之前对列表进行排序,这意味着第一个元素中的 5 被发送到列表的末尾,第一个元素被替换为 0,如下所示:
[0, 0, 0, ... 0, 5]
解决这个问题的方法是在用随机数填充数组后对数组进行排序,如下所示:
public class test {
public static void main(String[] args) {
int[] list = new int[10];
Random rand = new Random();
for (int i = 0; i < list.length; i++) {
list[i] = rand.nextInt(100);
}
Arrays.sort(list);
System.out.println(Arrays.toString(list));
}
}
希望这有帮助!
添加回答
举报