java选择一个随机的类/对象

时间:2012-03-02 13:47:52

标签: java arrays object random

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

我尝试了一些我能想到的但没有工作的方法 我想在随机类中使用一个函数(所有类将具有相同的函数但返回不同)。

我应该提到我正在尝试返回一个图像,每次我尝试返回一个随机图像时它都不会返回任何图像(“null”)

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

    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);
                    }
                }

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

7 个答案:

答案 0 :(得分:2)

假设yourList是对象的数组,请使用以下单行:

Object randomObj = yourList[(int)Math.random() * list.length];

答案 1 :(得分:1)

您可以使用Random class来解决此问题。

String rndStr = yourArray[new Random().nextInt(yourArray.length)];

如果您需要反复执行此操作,则应考虑将Random作为成员变量,并在调用nextInt时重复使用相同的实例。

答案 2 :(得分:1)

您可以使用java.util.Random的方法nextInt()生成数组的随机索引。该方法接受一个参数,指定返回的maximum - 1值:指定数组的length

// Member variables.
Object[] arr = ...;
Random r = new Random();

Object nextRandmonObject()
{
    return arr[r.nextInt(arr.length)];
}

答案 3 :(得分:0)

你可以让他们都实现相同的界面然后只是随机选择类。 一些非常不受限制的伪代码:

public class  myclass1 implements RandomInterface {}


public class  myclass2 implements RandomInterface {}

public interface RandomInterface {
    public void doStuff1();
    pubilc String doStuff2();
}

    public class random{
        RandomInterface randomObj = yourList[(int)Math.random() * list.length];
        randomObj.doStuff1();
        randomObj.doStuff2();

    }

答案 4 :(得分:0)

非常简单:

Object your_array[];
[...]
Random rnd = new Random();
Object random_element = your_array[rnd.nextInt(your_array.length)];

答案 5 :(得分:0)

像这样

    String[] a = new String[]{"1","2","3","4"};
    Random rand = new Random();
    String arbit = a[rand.nextInt(a.length)];

答案 6 :(得分:0)

所有对象都有一个返回内容的函数,所以让它们实现这个接口:

public interface ObjectReturningSomething
{
    Object theFunction();
}

然后你的对象将是这样的类,函数返回不同类型的对象:

public class ObjectReturningString implements ObjectReturningSomething
{
    String theFunction() { return "Foo"; }
}
public class ObjectReturningInteger implements ObjectReturningSomething
{
    Integer theFunction() { return 42; }
}

这是一系列这样的对象:

ObjectReturningSomething[] objectArray = new ObjectReturningSomething[] { new ObjectReturningString(), new ObjectReturningInteger() };

以下是如何选择一个随机的:

int randomIndex = new Random().nextInt(array.length);
ObjectReturningSomething randomObject = objectArray.get(randomIndex);

以下是如何调用该功能。

System.out.println(randomObject.theFunction());