java编写扑克的洗牌程序



java编写扑克的洗牌程序

1package com.web; 2 3public class Card { 4 5    private String face; // A, K, Q, J, 10,  2 6    private String suit; // Spade, Heart, Club, Diamond 7 8    public Card(){ 9        10    }11    12    //定义一个构造函数用于初始化点数2~A的牌13    public Card(String suit, String face) {14        this.face = face;15        this.suit = suit;16    }1718    //定义一个构造函数用于初始化大王和小王 19    public Card(String suit){20        this.face = "";  //如果不给face赋值的话,洗牌和切牌后的大小王前面会显示&#8220;null&#8221; 21        this.suit = suit;22    }23    24    protected String getFace() {25        return face;26    }2728    protected String getSuit() {29        return suit;30    }3132    public String toString() {33        return suit + " " + face;34    }3536    public static void shuffle(Card[] deck, int startIndex, int size, int splitIndex) {37        if (splitIndex * 2 > size) {38            Card.swap(deck, startIndex, splitIndex, size - splitIndex);39            shuffle(deck, size - splitIndex, splitIndex, size - splitIndex);40        } else if (splitIndex * 2 < size) {41            Card.swap(deck, startIndex, size - splitIndex, splitIndex);42            shuffle(deck, startIndex, size - splitIndex, splitIndex);43        } else {44            Card.swap(deck, startIndex, splitIndex, splitIndex);45        }4647    }4849    public static void swap(Card[] deck, int srcIndex, int dstIndex, int size) {50        String face = "";51        String suit = "";52        for (int i = 0; i < size; i++) {53            face = deck[srcIndex + i].face;54            suit = deck[srcIndex + i].suit;55            deck[srcIndex + i].face = deck[dstIndex + i].face;56            deck[srcIndex + i].suit = deck[dstIndex + i].suit;57            deck[dstIndex + i].face = face;58            deck[dstIndex + i].suit = suit;59        }60    }61    62    public static void main(String[] args){63        Card[] deck = new Card[54];64        String f[] = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };65        // String s[] = {"Spade","Heart","Club","Diamond"};66        String s[] = { "黑桃", "红桃", "梅花", "方块" };67        for (int i = 0; i < s.length; i++) {68            for (int j = 0; j < f.length; j++) {69                deck[i * 13 + j] = new Card(s[i], f[j]);70            }71            deck[52] = new Card("小王"); 72            deck[53] = new Card("大王"); 73        }74        int rnd = 0;75        int numOfShuffle = 10;76        for (int i = 0; i < numOfShuffle; i++) {77            rnd = (int) Math.abs(Math.random() * 52);78            Card.shuffle(deck, 0, deck.length, rnd);79        }80        // Test81        for (int i = 0; i < deck.length; i++) {82            System.out.println(deck[i]);83        }84    }85}86

你可能感兴趣的:(java,工作,java编写扑克的洗牌程序)