首页 > 解决方案 > 每次调用方法时如何使方法中的数组不改变

问题描述

我做了一个使用随机类生成数字的方法。这些数字用于填充数组。该方法返回填充的数组。因此,我制作了一些其他数组,它们与返回的数组相等。然而,这些数组都是相同的,即使它们应该是随机的。

我尝试打印每个调用随机数组的方式,就在它调用的位置。这给了我不同的数组。但是,如果我将打印件移到所有调用下,那么数组都是一样的。另外我认为这是一个数组问题,因为我只有数组有这个问题。

    public static int[] numberGenerator(int[] array) {
        Random rand = new Random();
        int min = 0;
        int max = 0;
        int x = 0;

        for (int j = 0; j < array.length; j++) {        

            if (j == 0) {
                min = 1;
                max = 15;
            }
            if (j == 1) {
                min = 16;
                max = 30;
            }
            if (j == 2) {
                min = 31;
                max = 45;
            }
            x = rand.nextInt((max - min) + 1) + min;
            array[j] = x;                               
        }
        return array;
    }

    public static void main(String[] args) {
        int[] array = {' ', ' ', ' '};
        int[] array1 = numberGenerator(array);  
        int[] array2 = numberGenerator(array);

        System.out.println(array1[1]);
        System.out.println(array2[1]);          
    }
}

我正在寻找不同的数组。

标签: java

解决方案


您正在修改传递该方法的数组。鉴于您无论如何都不使用数组的现有内容,最好只传递您想要的长度,并在方法中创建一个新数组:

public static int[] numberGenerator(int length) {
    int[] array = new int[length];
    // Rest of method as before
}

然后将您的main方法更改为:

public static void main(String[] args) {
    int[] array1 = numberGenerator(3);  
    int[] array2 = numberGenerator(3);

    System.out.println(array1[1]);
    System.out.println(array2[1]);          
}

推荐阅读