2012-03-02 3 views
0

Есть ли способ выбрать случайный объект из массива объектов?Выбор и использование случайного класса из массива

Я пробовал несколько способов, о которых я мог думать, но никто не работает. Я хочу использовать функцию в случайном классе (все классы будут иметь одну и ту же функцию, но разные возвраты (но все они возвращают образ, у них просто разные пути)).

Вот некоторые из моего кода я имею проблему с

 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

Возможно, создание экземпляра одного из этих объектов поможет? Как бы то ни было, все они 'null' –

ответ

1

Вы уже используете правильный подход для случайного выбора элементов из массива:

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

Но как Брайан Роуч отметил, вы должны иметь что-то в массиве, чтобы выбрать ...

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

    } 
} 
+0

+1 для' List ', который также подпадает под' Collections.shuffle() '. – trashgod

Смежные вопросы