2011-07-17 61 views
8

我有我的數組中的國家列表,我想從列表中選擇隨機國家(使用隨機可能?),但我自己沒有找到答案...字符串數組列表中的隨機字符串

這是我到目前爲止有:

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

回答

27

嘗試:

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

@roni:Burleigh Bear是正確的,值永遠不會是list.length。根據Java文檔:「返回一個僞隨機數,均勻分佈的int值在0(含)和指定的值**(不含)之間**」 – TaylorP

+0

謝謝先生,正是我所需要的。 –

+0

@Burleigh Bear您能告訴我如何從該數組中隨機選擇一個字符串,並且每次都需要其他字符串。我的意思是如果我不想重複字符串值,那麼在此代碼中需要修改什麼。 – Kunu

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

爲什麼不是5.99而不是5.99? –

+0

因爲地板。你不會得到一個統一的分佈,因爲5只會是getFloat返回1.0時的結果。 – roni

+0

但只有5個條目,所以你想要一個統一的分配0..4不是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; 

我從我的手機中輸入了這個語法錯誤,但它有效。

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循環一次循環遍歷字符串數組。 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; 
    }