有没有办法从一组对象中选择一个随机对象?
我尝试了一些我能想到的但没有工作的方法 我想在随机类中使用一个函数(所有类将具有相同的函数但返回不同)。
我应该提到我正在尝试返回一个图像,每次我尝试返回一个随机图像时它都不会返回任何图像(“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)])),代码就可以工作。 每种类型的汽车都延伸了汽车。
答案 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());