Java 如何在使用";时初始化具有多个值的整数数组;至于;

Java 如何在使用";时初始化具有多个值的整数数组;至于;,java,arrays,Java,Arrays,当我试图用Java创建一个小型GUI时,我偶然发现了数组的这个小问题 我曾尝试将随机整数插入一维数组,结果发现随机整数不会被赋值 //Declaring an Integer Array int[] wuerfel = new int[2]; //It will loop once while assigning a random number to the array for(int i = 0; i <= 1; i++) {

当我试图用Java创建一个小型GUI时,我偶然发现了数组的这个小问题

我曾尝试将随机整数插入一维数组,结果发现随机整数不会被赋值

//Declaring an Integer Array    
int[] wuerfel = new int[2];

//It will loop once while assigning a random number to the array
            for(int i = 0;  i <= 1; i++) {
                Random rand = new Random(6);
                int zahlen = rand.nextInt(6) + 1;
                wuerfel[i] = zahlen;
            }

System.out.println(Arrays.toString(wuerfel));
//声明一个整数数组
int[]wuerfel=新int[2];
//将随机数分配给数组时,它将循环一次

对于(int i=0;i构造函数调用
new Random(6)
不会执行您认为它会执行的操作:
6
是种子,而不是可能输出的范围。因此,它每次都会生成相同的输出

可能的解决办法:

  • 改为使用
    Random()
    的无参数构造函数,这样每次都会给它一个不同的种子
  • 在循环外部声明并初始化
    rand
    ,可以使用或不使用显式种子
  • 使用
    Math.random()

构造函数调用
new Random(6)
不会做您认为它会做的事情:
6
是种子,而不是可能输出的范围。因此它每次都会产生相同的输出

可能的解决办法:

  • 改为使用
    Random()
    的无参数构造函数,这样每次都会给它一个不同的种子
  • 在循环外部声明并初始化
    rand
    ,可以使用或不使用显式种子
  • 使用
    Math.random()

因此,在代码中,您为自己的对象设置了一个种子,并在每次循环迭代中创建新的
Random
对象,使其每次返回相同的数字。如果使用种子,则
Random
类的文档说明:

如果使用相同的种子创建了两个Random实例,并且对每个实例进行了相同的方法调用序列,则它们将生成并返回相同的数字序列

在您的情况下,您可以从构造函数中除去种子值,或者将类对象创建移动到循环之外:

public static void main(String[] args) {
        int[] arr = new int[2];

        Random rand = new Random();

        for(int i = 0;  i <= 1; i++) {
            int zahlen = rand.nextInt(6) + 1;
            arr[i] = zahlen;
        }

        System.out.println(Arrays.toString(arr));
    }
publicstaticvoidmain(字符串[]args){
int[]arr=新的int[2];
Random rand=新的Random();

对于(int i=0;i,您在代码中为自己的循环设置了一个种子,并在每次循环迭代中创建新的
Random
对象,因此每次都返回相同的数字。如果使用种子,则
Random
类的文档说明:

如果使用相同的种子创建了两个Random实例,并且对每个实例进行了相同的方法调用序列,则它们将生成并返回相同的数字序列

在您的情况下,您可以从构造函数中除去种子值,或者将类对象创建移动到循环之外:

public static void main(String[] args) {
        int[] arr = new int[2];

        Random rand = new Random();

        for(int i = 0;  i <= 1; i++) {
            int zahlen = rand.nextInt(6) + 1;
            arr[i] = zahlen;
        }

        System.out.println(Arrays.toString(arr));
    }
publicstaticvoidmain(字符串[]args){
int[]arr=新的int[2];
Random rand=新的Random();
对于(int i=0;i
*
int[]wuerfel=新int[2];
//将随机数分配给数组时,它将循环一次
Random rand=新的Random();
对于(int i=0;i
*
int[]wuerfel=新int[2];
//将随机数分配给数组时,它将循环一次
Random rand=新的Random();

对于(int i=0;i)为您的代码设置了一个种子>随机并创建新的<代码>随机每个循环迭代,因此每次只返回相同的数目。您可以考虑使用<代码> Mault.Read()。
获取随机数在发现我已经设定了一个种子后,我重写了代码,并将
random
类对象移出循环,这次我添加了“Math.random()它的工作完美无瑕。谢谢大家的帮助!为你的<代码>随机< /代码>设置了一个种子,并且你创建了新的<代码>随机每个循环迭代,所以每次只返回相同的数字。你可以考虑使用<代码> Mault.Read()。
获取随机数在发现我已经设定了一个种子后,我重写了代码,并将
random
类对象移出循环,这次我添加了“Math.random()感谢大家的帮助。
Random
对象的创建也应该移出循环。
Random
对象的创建也应该移出循环。