2012-11-12 30 views
27

Ho un array di stringhe:elemento casuale dalla matrice di stringhe

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

e sto ottenendo elemento casuale da questo:

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

Ora voglio ottenere il numero a cui Apple è presente quando premo il pulsante per ottenere frutta casuale, come quando premo il pulsante Randon, mi dà Banana..e inoltre dovrebbe darmi che il numero di elemento è 3

Ottengo l'elemento ma ho prob LEM ricevendo il numero di elemento, quindi per favore aiutami fuori

+2

quando si dice numero di elemento, si intende l'indice del frutto nella matrice? – omi0301

+0

sì, voglio dire l'indice – user1817558

+0

Vedi anche: [Come scegliere a caso un elemento da un array] (http://stackoverflow.com/questions/8065532/how-to-randomly-pick-an-element-from-an- array) –

risposta

64

Basta memorizzare l'indice generato in una variabile, e quindi accedere alla matrice utilizzando questo varaible:

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

P.S. Di solito non mi piace generare nuovo oggetto Random per randoization - preferisco usare un singolo Random nel programma - e riutilizzarlo. Mi permette di riprodurre facilmente una sequenza problematica se in seguito trovassi qualche bug nel programma.

Secondo questo approccio, avrò qualche variabile Random r qualche parte, e mi limiterò a utilizzare:

int idx = r.nextInt(fruits.length) 

Tuttavia, il vostro approccio è giusta pure, ma si potrebbe avere difficoltà a riprodurre una sequenza specifica se hai bisogno di più tardi.

+6

utilizzando i generici, esegue il drill-down su 'statico privato T randomFrom (T ... items) {return items [new Random(). nextInt (items.length)]; } ' –

Problemi correlati