解题分析:
1.所以牌可以用一个名为cards的数组表示;
2.52张牌有4种花色和13种牌面:
cards[i]%13决定牌面;cards[i]/13决定花色
package java学习代码文件;
public class bijiao {
public static void main(String[] args) {
final int N = 52;
int[]cards = new int[N];
String[]cardcolor = {"黑桃","红心","方块","梅花"};
String[]cardValue = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
for (int i = 0; i < cards.length; i++) {
cards[i]=i;
}
System.out.println("洗牌前:");
for (int i = 0; i < cards.length; i++) {
System.out.printf("%s-%s",cardcolor[cards[i]/13],cardValue[cards[i]%13]);
if ((i+1)%13==0) {
System.out.println();
}else{
System.out.print(",");
}
}
//生成下标0-51.newIndex交换,cards[i]和cards[newIndex]交换
for(int i = 0;i < cards.length; i++){
int newIndex = (int)(Math.random()*N);
int temp = cards[i];
cards[i] = cards[newIndex];
cards[newIndex] = temp;
}
System.out.println("洗牌后:");
for(int i=0;i<cards.length;i++){
System.out.printf("%s-%s",cardcolor[cards[i]/13],cardValue[cards[i]%13]);
if((i+1)%13==0){
System.out.println();
}else{
System.out.print(",");
}
}
}
}