从数组中选择并使用随机类

时间:2012-03-02 23:41:02

标签: java arrays random

有没有办法从一组对象中选择一个随机对象?

我尝试了一些我能想到的方法,但都没有用。我想在随机类中使用一个函数(所有类都将具有相同的函数但返回不同(但它们都返回一个Image,它们只有不同的路径)。)

以下是我遇到问题的一些代码

     Car car;
     Ford ford; 
     Mazda mazda;
     Fiat fiat;
     Rover rover;


         Car carlist[] = {ford,fiat,mazda,rover} 


 public void paint(){ 

//this displays an image every 128 pixles
          for (int i = 0;i<Width;i+=128){ 
             for(int j=128; j<Height;j+=128){
 // this draws the image (the image is declaired in each car's class as getImage)

                    g.drawImage((car.carList[rand.nextInt(5)]).getImage(), i, j , this); 
                    } 
                } 

如果我放入一个对象(如果我放入car.ford而不是carcarList [rand.nextInt(5)]),则代码可以工作。每种类型的汽车都延伸了汽车。

2 个答案:

答案 0 :(得分:1)

您已经使用正确的方法从数组中随机选择项目:

String[] a = {"a","b","c"};
Random rand = new Random();
System.out.println(a[r.nextInt(3)]);

但正如Brian Roach所指出的那样,你必须在数组中选择一些内容来选择......

答案 1 :(得分:1)

当然你可以得到一个随机元素,虽然我推荐其中一个集合,并使用一个接口:

public interface Car {
    public Image getImage();
}

public class main {

    public static void main(String...args) {

        // repeat for other types, or define non-anonmyous versions
        Car ford = new Car() {
                      private Image fordImage = new Image(<location>);
                      public Image getImage() {
                                return fordImage;
                      }
                    };

        List<Car> carList = new ArrayList<Car>();
        carList.add(ford);

        // Gets a random car
        Car randomCar = carList.get(random.nextInt(carList.size()));

    }
}