學習集合後發現集合比數組要靈活多了,不固定長度可以實時添加删除。實作洗牌的原理很簡單,我這裡用到了随機數,但是怎麼能讓随機内容布重複呢?我建立個A集合,把撲克元素全存進去,然後随機它,随機出一個元素就把這個元素從A中删除,添加到建立的B集合中,然後繼續随機A不斷循環,這樣就能使随機内容不重複了。輸出效果界面如下,由于沒用換号太長就截取了一部分,如果有更好的思路請指出:
import java.util.ArrayList;
import java.util.Random;
public class test5 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
String name = "";
for (int i = 1; i <= 13; i++) { //儲存一副撲克到集合
switch (i) {
case 1:
name = "A";
break;
case 11:
name = "J";
break;
case 12:
name = "Q";
break;
case 13:
name = "K";
break;
default:
name = String.valueOf(i);
break;
}
list.add("♡" + name);
list.add("♦" + name);
list.add("♠" + name);
list.add("♣" + name);
}
list.add("大\uD83D\uDC7B");
list.add("小\uD83D\uDC7B");
poker(list);
}
public static void poker(ArrayList list) {
Random r = new Random();
ArrayList reList = new ArrayList();
for (int i = 0; i < list.size(); i++) {
int p = r.nextInt(list.size()); //随機撲克
reList.add(list.get(p));
list.remove(p); //将随機出來的撲克删除,此時list 數目少1
i--; //以上條件下i++一直運作會少掉幾乎一半元素,來個i--抵消
}
for (int i = 0; i < reList.size(); i++) {
System.out.print(reList.get(i) + " "); //輸出随機排序的撲克牌
}
}
}