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