学习集合后发现集合比数组要灵活多了,不固定长度可以实时添加删除。实现洗牌的原理很简单,我这里用到了随机数,但是怎么能让随机内容布重复呢?我创建个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) + " "); //输出随机排序的扑克牌
}
}
}