2012-10-05 61 views
2

我對Java很新,所以對大多數人來說這似乎太容易了......這是完全錯誤的嗎? 我的問題是如何編寫一個方法selectRandom(String[] names), 它從給定的數組中返回一個隨機選擇的名稱。如何返回隨機字符串Arrray Java

應該以相等的概率選擇每個名稱。

public static String selectRandom(String[] names)  
{  
    String num = names[0]; 
    int[]newArray = new int[names.length]; 
    for(int i =0; i<names.length;i++) 
    { 
     Random r = new Random(); 
     int ranNum= r.nextInt(names.length)+1; 
     num = names[ranNum]; 
    } 
    return num; 
} 
+1

你不需要在那裏有一個循環。只需選擇隨機索引並返回相應的字符串。 – Shashwat

+0

步驟:隨機選擇一個小於數組長度的數字,返回數組元素?你能把它翻譯成代碼嗎? – nhahtdh

+1

我認爲這裏的主要問題不是如何得到隨機的。因爲OP提到**每個名字應該以相等的概率選擇**我認爲他需要一個統一的隨機函數。我不認爲Java中的隨機核心庫是統一的。 – Kent

回答

4
public static String selectRandom(String[] names)  
{  
     Random r = new Random(); 
     int ranNum= r.nextInt(names.length); 
     return names[ranNum]; 

} 

你不最需要的代碼你的方法裏面。也許你應該嘗試這樣的事情?

+5

如果'names'爲空則不起作用。 – Vulcan

+0

它也可能產生NullPointerException。 –

+0

@Russell Gutierrez你能告訴我如何從數組中選擇一個隨機字符串值,並且我還希望每次都使用其他字符串。我的意思是如果我不想重複相同的字符串值,那麼在此代碼中需要修改什麼。 – Kunu

5

您可以簡單地生成一個隨機數達到數組的大小,並獲得該索引的價值。

public static String selectRandom(String[] names) { 
    if (name != null && names.length > 0) { 
     Random r = new Random(); 
     return names[r.nextInt(names.length)]; 
    } 
    return null; 
} 
+0

您應該添加空檢查,否則'if(names.length> 0)'可能會填充空指針異常。 –

+0

+1現在看起來很具體。 –

+0

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

0

隨機選擇一個索引並返回names中對應的String。有一個Random類可以在java中獲得隨機數。還請檢查nextInt方法。

public static String selectRandom(String[] names)  
{  
    Random rand = new Random(); 
    int index = rand.nextInt(names.length); 
    return names[index]; 
}