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赋值的话,洗牌和切牌后的大小王前面会显示“null” 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