2017-02-01 17 views
-1

如何從數組中獲取,返回和刪除一個隨機元素,並且最有效的做到這一點? 陣列代碼看起來像這樣:如何獲取,返回和刪除數組中的隨機元素?

String arr[3] = {"Cat", "Dog", "Mouse", "Horse"}; 

感謝您的任何幫助。

編輯

到它是一個記憶遊戲,所以如果重複超過兩次,我會毀了比賽的方式。

+0

你只需要從數組中刪除一個元素或單元和滑動陣列向左? –

+0

這似乎是HW或類似的東西。我們可以幫助你,但你應該向我們展示你的嘗試。 –

+1

使用'.nextInt()'從'java.util.Random'生成一個**隨機**索引,並做任何你想做的事情。就那麼簡單。 –

回答

0

你可以這樣做:

String[] datas = new String[3]; 
Random rand = new Random(); 
rand.setSeed(System.currentTimeMillis()); 

int i = rand.nextInt(datas.length); 
String val = datas[i]; 
datas[i] = null; 
return val; 
+0

很好的答案,給予+1 :) –

+0

請注意,這並不會刪除它本身的值,它只是用'null'覆蓋它。因此,下次您隨機獲取該索引時,最終會得到一個「null」值。 – QBrute

+0

'好吧,我只需添加必要的錯誤檢查。 –

1

您可以使用%運算符創建的array.Use的Math.random隨機指標得到一個分數隨機數,並使用它來創建隨機指標如下

String[] arr = {"Cat", "Dog", "Mouse", "Horse"}; 
    int randPos = ((int)(Math.random()*1000))%arr.length; 
    String randEl = arr[randPos]; 
    System.out.println(randEl); 

您不能刪除數組的元素。所有你能做的就是將其設置爲null

0

得到一個字符串

Random r = new Random(); 
String arr[3] = {"Cat", "Dog", "Mouse", "Horse"}; 
String selectedString = arr[r.nextInt(arr.length)]; 

要求退貨,從方法內歸還字符串selectedString

刪除

Random r = new Random(); 
String arr[3] = {"Cat", "Dog", "Mouse", "Horse"}; 
arr[r.nextInt(arr.length)] = null 

注意,這將不會轉移array元素,也不會對array在長度被減小。

如果你需要那樣的功能,我建議使用Collection的ArrayList

0

你基本上不能刪除數組中的元素。

按照下列步驟:

  1. 轉換您的陣列到ArrayList

List<String> list = new ArrayList<String>(Arrays.asList(arr));

  • 獲取索引tandom數
  • int randPos = ((int)(Math.random()*1000))%arr.length;

  • 該索引處刪除元素
  • list.remove(randPos);

  • 將其轉換回字符串排列
  • arr = list.toArray(new String[0]);

    希望這有助於:)