2012-03-02 10 views
0

オブジェクトの配列からランダムなオブジェクトを選択する方法はありますか?配列からランダムなクラスを選択して使用する

私は思っていたが動作しない方法をいくつか試した。私はランダムなクラスで関数を使用したい(すべてのクラスは同じ関数を持ちますが、異なる戻り値を持ちます(しかし、それらはすべて、それらが異なるパスを持つImageを返します))。ここで

は、私のコードの一部は、私が代わりにcarcarList [rand.nextIntのcar.fordに入れた場合、私は(にオブジェクトを置く場合は、コードが動作

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

に問題が生じています(5) ]))。各カートタイプは車を拡張します。

+0

おそらくそれらのオブジェクトのインスタンス化は役に立ちますか?そのままですが、 'List 'の場合はすべてがNULLです。 –

答えて

1

あなたは既にランダムに配列から項目を選択するために適切なアプローチを使用している:

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

しかし、ブライアン・ローチが指摘したように、あなたが選択するために、アレイ内の何かを持っている必要が...

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

    } 
} 
+0

+1も 'Collections.shuffle()'に従います。 – trashgod

関連する問題