静态数组是不一样的[java]

问题描述:

我正试图创建一个Java程序,生成一个飞机座位的数量。到目前为止,我已经能够做到这一点,但是我的问题是每次运行客户端时生成的数字都不相同。我需要他们每次都是一样的...静态数组是不一样的[java]

我不知道我在做什么错,有人可以帮我吗?

import java.util.Random; 
import java.util.Arrays; 

public class Airplane { 
    public static Random randomNumbers = new Random(); 
    public static int[] oSeatLeft = new int[10]; 
    public static int[] mSeatLeft = new int[10]; 
    public static int[] wSeatLeft = new int[10]; 
    public static int oSeat = 0; 
    public static int mSeat = 0; 
    public static int wSeat = 0; 
    public static final int sCheck = 0; 

    public void genWSeats() { 

     int randSeatFill = 0; 
     if (wSeat == 0) { 
      for (int counter = 0; counter < wSeatLeft.length; counter++) { 
       randSeatFill = randomNumbers.nextInt(2); 
       if (randSeatFill == 1) { 
        wSeatLeft[counter] = 1; 
       } 
      } 
      if (wSeat == 0) { 
       wSeat++; 
      } 
     } 
    } 

    public int[] getWSeats() { 
     System.out.println(java.util.Arrays.toString(wSeatLeft)); 
     return wSeatLeft; 
    } 
} 

静态INT wSeat的目的应该是一个检查。如果wSeat大于零,那么它不应该为数组随机生成数字。不知道到底是怎么回事错在这里....

+4

我创建随机数据和随机出来。这是什么魔术? – John3136 2013-04-24 04:56:17

+0

我正在学习8O:P – 2013-04-24 05:04:27

使用Random构造与种子

public static Random randomNumbers = new Random(42); 

这样总是产生随机数的顺序相同。 42只是一个例子,你可以使用任何你想要的值。

+0

好吧,似乎工作到目前为止。我刚刚删除检查器,如果声明,答案保持不变...我认为这是好的... – 2013-04-24 05:01:20

+0

谢谢!这有助于一个邪恶的很多!所以我现在的问题是......当我创建多个对象作为这个类的扩展时,每个类中的随机数仍然是相同的....有没有办法只初始化一个变量,但让它产生每个班级有不同的数字? – 2013-04-24 05:33:37

+0

@布莱恩墨菲:我认为这可能有点棘手。每个类都需要自己的静态“随机”实例。 – MrSmith42 2013-04-24 17:24:07

在初始化时传递种子Random(long seed)。这将保证生成的数字序列总是相同的(因为它是一个伪随机数生成器)。

通行证种子在Random构造就会产生相同数量的每一次