[英]How to insert random numbers into an array and sort them
我的代码应该采用随机方法中生成的随机数并对它们进行排序,但它只给了我一个数字。
我的程序是一个随机数生成器,它应该生成 1000 个可以排序的数字,但我的代码只将一个数字插入到数组中。
public static void main(String[] args) {
// write
int max = 1000;
int min=0;
int range = max - min + 1;
// generate random numbers within 1 to 10
for (int i = 0; i < 1000; i++) {
int rand = (int) (Math.random () * range) + min;
System.out.println ( rand );
int array[] = {rand};
int size = array.length;
for ( i = 0; i < size - 1; i++) {
int min1 = i;
for (int j = i + 1; j < size; j++) {
if (array[j] < array[min1]) {
min = j;
}
}
int temp = array[min1];
array[min1] = array[i];
array[i] = temp;
}
for (int k = 0; k < size; i++) {
System.out.print(" " + array[i]);
}
}
}
您需要将程序分解为单独的步骤:
我注意到的几个问题:
max
和min
的值应分别为 10 和 1。array
。 它还应该具有 1000 的固定大小。if
语句条件中的>
更改为<
。 我还决定使用Arrays.toString()
来打印数组而不是循环。
public static void main(String[] args) {
int max = 10;
int min = 1;
int range = max - min + 1;
int size = 1000;
int[] array = new int[size];
for (int i = 0; i < size; i++) {
int rand = (int) (Math.random() * range + min);
array[i] = rand;
}
int temp = 0;
for (int i = 0; i < size; i++) {
for (int j = 1; j < size - i; j++) {
if (array[j - 1] > array[j]) {
temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
}
}
}
System.out.println(Arrays.toString(array));
}
您的代码将导致 ArrayIndexOutException。 以下是您的代码更改的代码,我没有更改太多,因此您可以比较它们并找到您的错误,祝好:D
public static void main(String[] args) {
int max = 1000;
int min=0;
int range = max - min + 1;
int[] array = new int[range];
// generate random numbers within 1 to 10
for (int i = 0; i < 1000; i++) {
int rand = (int) (Math.random () * range) + min;
array[i] = rand;
}
int size = array.length;
for (int i = 0; i < size; i++) {
int min1 = i;
for (int j = i + 1; j < size; j++) {
if (array[j] < array[min1]) {
min1 = j;//here min1
}
}
int temp = array[min1];
array[min1] = array[i];
array[i] = temp;
}
for (int k = 0; k < size; k++) {
System.out.print(" " + array[k]);
}
}
让我更清楚地解释一下,在OP的代码中有一些问题,两个专业:一个:
for ( i = 0; i < size - 1; i++) {
int min1 = i;
for (int j = i + 1; j < size; j++) {
if (array[j] < array[min1]) {
min = j;
}
}
int temp = array[min1];
array[min1] = array[i];
array[i] = temp;
}
永远不会运行,因为数组大小是 1,所以 for 循环短语将被忽略而不运行(意味着 for(int i = 0; i < 0; i++){....})。
二:
for (int k = 0; k < size; i++) {
System.out.print(" " + array[i]);
}
因为数组大小为 1,所以当数组 [1] 将抛出索引异常时。所以最外层循环只会运行一次然后抛出异常。
:D
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.