2011-07-17 10 views
8

배열 목록에 국가 목록이 있습니다. 목록에서 임의의 국가를 선택하고 싶습니다. (아마도 무작위를 사용합니까?), 대답을 직접 찾지 못했습니다.문자열 배열 목록의 무작위 문자열

이것은 내가 지금까지 무엇을 가지고

:

String[] list = {"Finland", "Russia", "Latvia", "Lithuania", "Poland"}; 
Random r = new Random(); 

답변

27

시도 :

list[r.nextInt(list.length)]; 
+0

@ 로니 : 벌리 베어는 정확합니다. 값은 결코 list.length가 아닙니다. 자바 문서에 따라 : "0 (포함)과 지정된 값 ** 사이의 균일하게 분포 된 int 값 ** **" – TaylorP

+0

선생님, 제가 필요로하신 것을 고맙습니다. –

+0

@Burleigh Bear 그 배열에서 임의의 문자열을 선택할 수있는 방법과 매번 다른 문자열을 원한다는 것을 알려주실 수 있습니까? 나는이 코드에서 필요한 수정이 무엇인지 문자열 값을 반복하고 싶지 않다는 것을 의미합니다. – Kunu

0
list[Math.floor(r.nextFloat()*5.99)] 
+1

5.99 대신 5를 사용해야하는 이유는 무엇입니까? –

+0

입니다. getFloat가 1.0을 리턴 할 때만 5가 결과가 될 것이기 때문에 균일 분포를 얻지 못할 것입니다. – roni

+0

하지만 5 개의 항목 만 있으므로 0. 0. 5가 아닌 균일 한 분포를 원합니다. –

0
private void pickText(){ 
    textview textView1= (TextView) findViewById(R.Id.textView1) 
    Random eventPicker = new Randorn(); 
    randomN = eventPicker.nextInt(3) +1; 

    switch (randomN){ 
     case 1: Intent a textview1.setText(StringOne); 
     break; 

     case 2: textview1.setText(StringTwo); 
     break; 

나는 내 전화기에서 prob 구문 오류가 있지만 그것을 작동합니다.

1

문자열 배열에서 임의의 문자열을 가져 오는 것과 비슷한 문제가 있습니다. 이 모든 임의 그리는 클릭으로 그래서는 버튼 액션에 적용, 상당히 잘 작동하는 것으로 (내가 거기 동일한 문자열의 여러 인스턴스가 연속적으로 전체에 그려지는 어떤 배열 크기 발견) :

import java.util.*; 
import java.util.Random.*; 

class Countries { 
    public Random g2 = new Random(); 
    public String[] list = new String[] { "Finland", "Russia", 
      "Latvia", "Lithuania", "Poland" }; 
    String random2; 
} 

// Applied to a button action: 
int INDEXn = g2.nextInt(list.length); 
for (int i2 = 0; i2 < INDEXn; i2++) { 
    random2 = (String) (list[INDEXn]); 
} 
System.out.println(random2 + '\n'); 

INDEXn에 의해 사용중인 g2 무작위가 임의의 정수를 호출합니다.이 경우 정의 된 문자열은 문자열 배열 list에서 정수 값으로 변환됩니다. for 루프는 String 배열을 한 번 순환합니다. random2 문자열은 INDEXn에서 선택한 정수를 (list[INDEXn])의 적절한 문자열 변수로 변환합니다.

1
static String getRandomString(){ 
     int r = (int) (Math.random()*5); 
     String name = new String [] {"India","USA","UK","Russia"}[r]; 
     return name; 
    }