用Java模拟洗牌的过程(52张牌)

解题分析:

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(",");
        }
    }
    }
}


 

猜你喜欢

转载自blog.csdn.net/weixin_44015669/article/details/89300801