- 设计一个扑克洗牌算法。将 52 张牌(不包括大、小王)用对象的形式表示,每张牌包括花色和大小。大小按如下序号排列: 2 、 3 、 4 、 5 、 6 、 7 、 8 、 9 、 10 、 J 、 Q 、 K 、 A ,花色为:“黑桃”,“花子”,“红桃”,“方片”,首先将扑克按顺序存放到一个一维数组中,然后按洗牌算法进行洗牌,输出洗完后的扑克牌序列。

public class PuKe {
String hua;
String num;
public PuKe() {
}
public PuKe(String hua,String num) {
this.hua=hua;
this.num=num;
}
public String toString() {
return "["+hua+num+"]";
}
public static void main(String[] args) {
String h[]= {"黑桃","花子","红桃","方片"};
String n[]= {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
PuKe p[]=new PuKe[52];
int c=0;
for(int k=0;k<13;k++) {
for(int j=0;j<4;j++) {
p[c]=new PuKe(h[j],n[k]);
c++;
}
}
for(int k=0;k<p.length;k++) {
System.out.print(p[k]+"\t");
if((k+1)%13==0)
System.out.println();
}
for(int k=0;k<p.length;k++) {
int a=(int)(Math.random()*52);
if(!p[k].equals(p[a])){
PuKe temp=p[k];
p[k]=p[a];
p[a]=temp;
}
}
System.out.println("--------输出洗牌后的扑克--------");
for(int k=0;k<p.length;k++) {
System.out.print(p[k]+"\t");
if((k+1)%13==0)
System.out.println();
}
}
}