2011-07-17 109 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; 
    }