2012-11-12 2 views
27

나는 문자열 배열이 있습니다랜덤 요소는

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

을 그리고 난하여이에서 임의의 요소를 얻고있다 : 사과가 존재하는

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

지금 내가 번호를 얻으려면 버튼을 눌렀을 때 랜덤 버튼을 누르면 바나나가 나옵니다. 또한 요소 번호가 3입니다.

나는 요소를 얻지 만 prob를가집니다. 요소 번호를 받고 렘, 그래서 밖으로 좀 도와주세요

+2

요소 번호를 말하면 배열에있는 과일의 색인을 의미합니까? – omi0301

+0

예 인덱스를 의미합니다 – user1817558

+0

참고 사항 : [배열에서 임의로 요소를 선택하는 방법] (http://stackoverflow.com/questions/8065532/how-to-randomly-pick-an-element-from-an- 배열) –

답변

64

그냥 변수에 생성 된 인덱스를 저장 한 다음이 가변적이고 사용하여 어레이에 액세스 :

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

P.S.을 나는 보통 랜덤 화마다 새로운 Random 객체를 생성하는 것을 싫어합니다. 프로그램에서 하나의 Random을 사용하고 다시 사용하는 것을 선호합니다. 나중에 프로그램에서 버그를 발견하면 문제가있는 시퀀스를 쉽게 재현 할 수 있습니다.

이 방법에 따르면, 어디 선가 몇 가지 변수 Random r이있을 것이다, 난 그냥 사용합니다 :

int idx = r.nextInt(fruits.length) 

그러나, 당신의 접근 방식뿐만 아니라 OK,하지만 당신은 힘든 시간을 특정 순서 경우의 재생이있을 수 있습니다 당신은 나중에해야합니다.

+6

제네릭을 사용하여 'private static T randomFrom (T ... items) {return items [새로운. 랜덤(). nextInt (items.length)]; }' –