2012-11-12 28 views
27

Ben bir dize dizisi vardır:Rastgele eleman

String[] fruits = {"Apple","Mango","Peach","Banana","Orange","Grapes","Watermelon","Tomato"}; 

ve ben bu rastgele eleman alıyorum: elma mevcut olduğu hangi

String random = (fruits[new Random().nextInt(fruits.length)]); 

şimdi numarası almak istiyorum rastgele meyve almak için düğmeye bastığımda, ben randon düğmesine bastığımda olduğu gibi bana Banana'yı verir ... ve ayrıca bana bu eleman numarasını vermelisiniz 3

Eleman aldım ama prob var eleman sayısını elde lem, bu yüzden dışarı bana yardım edin

+2

Öğe numarası dediğinizde, dizinizdeki meyve dizinini mi kastediyorsunuz? – omi0301

+0

evet dizini demek istiyorum – user1817558

+0

Ayrıca bakınız: [Bir diziden rasgele bir öğe nasıl seçilir] (http://stackoverflow.com/questions/8065532/how-to-randomly-pick-an-element-from-an- dizi) –

cevap

64

Sadece bir değişken oluşturulan indeksi saklamak ve daha sonra bu varaible kullanarak diziyi erişmek:

int idx = new Random().nextInt(fruits.length); 
String random = (fruits[idx]); 

Not; Genellikle randoizasyon başına yeni Random nesnesi üretmekten hoşlanmıyorum - programda tek bir Random kullanmayı tercih ediyorum - ve tekrar kullanıyorum. Daha sonra programda herhangi bir hata bulursam sorunlu bir diziyi kolayca yeniden üretmeme izin verir.

Bu yaklaşıma göre, bir yerlerde bazı değişken Random r olacak ve ben sadece kullanacağız:

int idx = r.nextInt(fruits.length) 

Ancak, yaklaşımınız yanı Tamam, ama zor bir zaman belirli bir diziyi eğer yeniden sahip olabilir Daha sonraya ihtiyacın var.

+6

jenerik kullanarak, özel statik T randomFrom (T ... öğeler) {aşağı öğeler [yeni Rastgele(). nextInt (items.length)]; } ' –