Java 如何将随机数插入数组并进行排序

Java 如何将随机数插入数组并进行排序,java,arrays,sorting,random,Java,Arrays,Sorting,Random,我的代码应该取随机方法生成的随机数并对它们进行排序,但它只给我一个数字 我的程序是一个随机数生成器,应该生成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

我的代码应该取随机方法生成的随机数并对它们进行排序,但它只给我一个数字

我的程序是一个随机数生成器,应该生成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]);
        }
    }
}
publicstaticvoidmain(字符串[]args){
//写
int max=1000;
int min=0;
整数范围=最大-最小+1;
//生成1到10之间的随机数
对于(int i=0;i<1000;i++){
int rand=(int)(Math.random()*range)+min;
System.out.println(兰德);
int数组[]={rand};
int size=array.length;
对于(i=0;i
您的代码将导致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]);
    }
}
publicstaticvoidmain(字符串[]args){
int max=1000;
int min=0;
整数范围=最大-最小+1;
int[]数组=新的int[范围];
//生成1到10之间的随机数
对于(int i=0;i<1000;i++){
int rand=(int)(Math.random()*range)+min;
数组[i]=rand;
}
int size=array.length;
对于(int i=0;i
让我更清楚地解释一下,OP的代码中有一些问题,两个主要问题: 一:

for(i=0;i
将永远不会运行,因为数组大小为1,所以for循环短语将在不运行的情况下被忽略(mean for(int i=0;i<0;i++){…})

二:

for(int k=0;k
因为数组大小为1,所以当数组[1]抛出索引时,将抛出异常。所以最外层的循环只运行一次,然后抛出异常


:D

您需要将程序分为不同的步骤:

  • 将所有随机数插入数组
  • 对数组进行排序
  • 打印数组的内容
  • 我注意到的几个问题:

  • 由于要从1-10生成1000个数字,
    max
    min
    的值应分别为10和1
  • 数组
    应该在开始插入值之前声明。它的固定大小也应该是1000
  • 冒泡排序算法也有一些错误,导致输出错误。如果您希望将数组从最大到最小排序,只需在codeif/code语句的条件下将
    更改为
    数组[j]){
    温度=阵列[j-1];
    数组[j-1]=数组[j];
    数组[j]=温度;
    }
    }
    }
    System.out.println(array.toString(array));
    }
    
    int-array[]={rand}你觉得怎么样是什么意思?你对数字排序是什么意思?你只得到1个输出,因为
    array
    只有一个元素。我的随机数生成器只传递一个数字,当它要传递1000个数字时。对于1000个循环的每一次迭代,你都在做
    int-array[]={rand}-这是在创建一个新数组,其中包含一个元素。如何对其进行编码以使其包含1000个元素?您可能需要查看代码。您的假设并不反映OP的代码所建议的OP要求。例如,为什么数组
    范围
    元素?为什么OP要迭代1000次?
    
    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]);
        }
    
    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));
    }