本帖最后由 richarlin1987 于 2010-06-18 23:37:26 编辑

解决方案 »

  1.   

    import java.util.Random;public class Poker {
    public static void main(String args[]) throws Exception {
    Random random = new Random();
    int[] poker = getPoker();
    int j = 0;
    int temp =0;
    for (int i = 0; i < 52; i++) {
    temp = poker[i];
    j = random.nextInt(52);
    poker[i] = poker[j];
    poker[j] = temp;
    }
    String A = "A:";
    String B = "B:";
    String C = "C:";
    String D = "D:";
    for(int i = 0;i<52 ;i++){
    if(i%4==0){
    A+=getColor(poker[i])+format(poker[i]%13)+"\t";
    }
    if(i%4==1){
    B+=getColor(poker[i])+format(poker[i]%13)+"\t";
    }
    if(i%4==2){
    C+=getColor(poker[i])+format(poker[i]%13)+"\t";
    }
    if(i%4==3){
    D+=getColor(poker[i])+format(poker[i]%13)+"\t";
    }
    }
    System.out.println(A);
    System.out.println(B);
    System.out.println(C);
    System.out.println(D);

    }

    public static String getColor(int i ){
    if((i-1)/13==0){
    return "红桃:";
    }else if((i-1)/13==1){
    return "黑桃:";
    }else if((i-1)/13==2){
    return "方块:";
    }else{
    return "梅花:";
    }
    }

    public static String format(int i ){
    if(i==11){
    return "J";
    }else if(i==12){
    return "Q";
    }else if (i == 0){
    return "K";
    }else{
    return String.valueOf(i);
    }
    }public static int[] getPoker() {
    int[] poker = new int[52];
    for (int i = 0; i < 52; i++) {
    poker[i] = i + 1;
    }
    return poker;
    }
    }
      

  2.   

    http://www.java3z.com/cwbwebhome/article/article5/5579.html?id=885这个好
      

  3.   

    不知道可以不/*
     * file: PlayPoker.java
     * class: PlayPoker
     *
     * description: 
     *
     * @author:  leisore
     * @version: V1.0.0
     */
    package cn.leisore.daily._2010_06_21;import java.lang.reflect.Array;
    import java.util.Random;
    import java.util.concurrent.ArrayBlockingQueue;
    import java.util.concurrent.BlockingQueue;import javax.swing.JTextArea;public class PlayPoker {    private Thread master = null;
        private Thread[] players = null;    public PlayPoker(JTextArea[] text) {
            BlockingQueue<Integer>[] pokerQueues = (BlockingQueue<Integer>[]) Array
                    .newInstance(BlockingQueue.class, 4);
            for (int i = 0; i < 4; i++) {
                pokerQueues[i] = new ArrayBlockingQueue<Integer>(13);
            }        master = new Thread(new Master(pokerQueues));
            players = new Thread[4];
            for (int i = 0; i < 4; i++) {
                players[i] = new Thread(new Player(pokerQueues[i], text[i]));
            }
        }    public void start() {
            master.start();
            for (Thread t : players) {
                t.start();
            }
        }    public void stop() {
            master.interrupt();
            for (Thread t : players) {
                t.interrupt();
            }
        }    public static void main(String[] args) {
            /*
             * PlayPoker p = new PlayPoker(); p.start();
             */
        }    public static class Master implements Runnable {        final int[] pokers = new int[52];
            final Random rand = new Random();
            final BlockingQueue<Integer>[] pokerQueues;        Master(BlockingQueue<Integer>[] pokerQueue) {
                this.pokerQueues = pokerQueue;
                initPokers();
            }        private void initPokers() {
                for (int i = 1; i < 53; i++) {
                    pokers[i - 1] = i;
                }
            }        private void swap(int i, int j) {
                int temp = pokers[i];
                pokers[i] = pokers[j];
                pokers[j] = temp;
            }        private void washPoker() {
                for (int t = 0; t < 52; t++) {
                    int i = Math.abs(rand.nextInt(52));
                    int j = Math.abs(rand.nextInt(52));
                    swap(i, j);
                }
            }        private void sendPoker() {
                for (int t = 0; t < 52; t++) {
                    try {
                        pokerQueues[t % 4].put(pokers[t]);
                        Thread.sleep(1 * 1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }        public void run() {
                while (true) {
                    washPoker();
                    sendPoker();
                }
            }
        }    public static class Player implements Runnable {        static int idCounter = 0;
            int id = idCounter++;
            int pokerCount = 0;
            final int[] pokers = new int[13];
            final BlockingQueue<Integer> pokerQueue;
            final private JTextArea textarea;        Player(BlockingQueue<Integer> pokerQueue, JTextArea textarea) {
                this.pokerQueue = pokerQueue;
                this.textarea = textarea;
            }        public void run() {
                try {
                    while (true) {
                        int poker = pokerQueue.take();
                        Thread.sleep(1000);
                        pokers[pokerCount++ % 13] = poker;
                        textarea.append(poker + " ");
                        if (pokerCount % 8 == 0 || pokerCount % 13 == 0) {
                            textarea.append("\n");
                        }
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            
            public void replay() {
                textarea.setText("");
            }
        }
    }
      

  4.   

    ui:package cn.leisore.daily._2010_06_21;import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.GroupLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.LayoutStyle;
    import javax.swing.SwingUtilities;
    import javax.swing.WindowConstants;public class PlayPokerUI extends JFrame {
        PlayPoker p = null;    public PlayPokerUI() {
            initComponents();
        }    private void initComponents() {        jScrollPane1 = new JScrollPane();
            poker1 = new JTextArea();
            jScrollPane2 = new JScrollPane();
            poker2 = new JTextArea();
            jScrollPane3 = new JScrollPane();
            poker3 = new JTextArea();
            jScrollPane4 = new JScrollPane();
            poker4 = new JTextArea();
            start = new JButton();
            stop = new JButton();        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            setName("Poker");
            setResizable(false);        jScrollPane1.setName("jScrollPane1");        poker1.setColumns(16);
            poker1.setRows(5);
            poker1.setName("poker1");
            jScrollPane1.setViewportView(poker1);        jScrollPane2.setName("jScrollPane2");        poker2.setColumns(16);
            poker2.setRows(5);
            poker2.setName("poker2");
            jScrollPane2.setViewportView(poker2);        jScrollPane3.setName("jScrollPane3");        poker3.setColumns(16);
            poker3.setRows(5);
            poker3.setName("poker3");
            jScrollPane3.setViewportView(poker3);        jScrollPane4.setName("jScrollPane4");        poker4.setColumns(16);
            poker4.setRows(5);
            poker4.setName("poker4");
            jScrollPane4.setViewportView(poker4);        start.setText("start");
            start.setName("start");
            start.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    if (p == null) {
                        p = new PlayPoker(new JTextArea[] { poker1, poker2, poker3,
                                poker4 });
                        p.start();
                    }
                }
            });        stop.setText("stop");
            stop.setName("stop");
            stop.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {
                    if (p != null) {
                        p.stop();
                        p = null;
                    }
                }
            });        GroupLayout layout = new GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout
                    .setHorizontalGroup(layout
                            .createParallelGroup(GroupLayout.Alignment.LEADING)
                            .addGroup(
                                    layout
                                            .createSequentialGroup()
                                            .addGroup(
                                                    layout
                                                            .createParallelGroup(
                                                                    GroupLayout.Alignment.LEADING)
                                                            .addGroup(
                                                                    layout
                                                                            .createSequentialGroup()
                                                                            .addContainerGap()
                                                                            .addGroup(
                                                                                    layout
                                                                                            .createParallelGroup(
                                                                                                    GroupLayout.Alignment.LEADING)
                                                                                            .addComponent(
                                                                                                    jScrollPane1,
                                                                                                    GroupLayout.PREFERRED_SIZE,
                                                                                                    193,
                                                                                                    GroupLayout.PREFERRED_SIZE)
                                                                                            .addComponent(
                                                                                                    jScrollPane3,
                                                                                                    GroupLayout.PREFERRED_SIZE,
                                                                                                    193,
                                                                                                    GroupLayout.PREFERRED_SIZE))
                                                                            .addGap(
                                                                                    10,
                                                                                    10,
                                                                                    10)
                                                                            .addGroup(
                                                                                    layout
                                                                                            .createParallelGroup(
                                                                                                    GroupLayout.Alignment.LEADING)
                                                                                            .addComponent(
                                               
      

  5.   

    ui: jScrollPane2,
                                                                                                    GroupLayout.PREFERRED_SIZE,
                                                                                                    201,
                                                                                                    GroupLayout.PREFERRED_SIZE)
                                                                                            .addComponent(
                                                                                                    jScrollPane4,
                                                                                                    GroupLayout.PREFERRED_SIZE,
                                                                                                    201,
                                                                                                    GroupLayout.PREFERRED_SIZE)))
                                                            .addGroup(
                                                                    layout
                                                                            .createSequentialGroup()
                                                                            .addGap(
                                                                                    79,
                                                                                    79,
                                                                                    79)
                                                                            .addComponent(
                                                                                    start)
                                                                            .addGap(
                                                                                    106,
                                                                                    106,
                                                                                    106)
                                                                            .addComponent(
                                                                                    stop)))
                                            .addContainerGap(
                                                    GroupLayout.DEFAULT_SIZE,
                                                    Short.MAX_VALUE)));
            layout.setVerticalGroup(layout.createParallelGroup(
                    GroupLayout.Alignment.LEADING).addGroup(
                    layout.createSequentialGroup().addContainerGap().addGroup(
                            layout.createParallelGroup(
                                    GroupLayout.Alignment.LEADING).addComponent(
                                    jScrollPane1, GroupLayout.PREFERRED_SIZE, 137,
                                    GroupLayout.PREFERRED_SIZE).addComponent(
                                    jScrollPane4, GroupLayout.DEFAULT_SIZE, 137,
                                    Short.MAX_VALUE)).addPreferredGap(
                            LayoutStyle.ComponentPlacement.RELATED).addGroup(
                            layout.createParallelGroup(
                                    GroupLayout.Alignment.LEADING, false)
                                    .addComponent(jScrollPane2,
                                            GroupLayout.Alignment.TRAILING)
                                    .addComponent(jScrollPane3,
                                            GroupLayout.Alignment.TRAILING,
                                            GroupLayout.DEFAULT_SIZE, 137,
                                            Short.MAX_VALUE)).addPreferredGap(
                            LayoutStyle.ComponentPlacement.RELATED, 21,
                            Short.MAX_VALUE).addGroup(
                            layout.createParallelGroup(
                                    GroupLayout.Alignment.BASELINE).addComponent(
                                    start).addComponent(stop)).addContainerGap()));        pack();
        }    public static void main(String args[]) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new PlayPokerUI().setVisible(true);
                }
            });
        }    private JScrollPane jScrollPane1;
        private JScrollPane jScrollPane2;
        private JScrollPane jScrollPane3;
        private JScrollPane jScrollPane4;
        private JTextArea poker1;
        private JTextArea poker2;
        private JTextArea poker3;
        private JTextArea poker4;
        private JButton start;
        private JButton stop;
    }
      

  6.   

    先洗牌,利用随机数就行了
    import java.util.*;
    public class TestCard { /**
     * 随机发牌程序
     */ 
    public static void main(String[] args) {
    String[] shape={"红桃","黑桃","梅花","方片"};
    String[] nums={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
    String[] hands={"玩家一:","玩家二:","玩家三:","玩家四:"};
    String[] cards=new String[52];
    int k=0;
    //下面循环用于产生一副牌
    for(int i=0;i<shape.length;i++){
    for(int j=0;j<nums.length;j++){
    cards[k++]=shape[i]+nums[j];
    }
    }
    Random r=new Random();
    int next=r.nextInt(51)+1;
    //将牌的顺序打乱
    for(int i=0;i<52;i++){
    String temp="";
    //用于和数组的第一个元素进行交换
    temp=cards[0];
    cards[0]=cards[next];
    cards[next]=temp;
    next=r.nextInt(51)+1;
    }
    //下面的循环用于发牌hands
    int j=0;
    for(int i=0;i<cards.length;i++){
    if(i%13==0){
    System.out.print(hands[j]);
    }
    System.out.print(cards[i]+" ");
    if((i+1)%13==0){
    System.out.println();
    j++;
    }
    }
    }
    }
      

  7.   


    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;public class CardShuffle {
    public static void main(String[] args) {
    List list=new ArrayList();
    String[] players={"小王","小张","小赵","小白"};
    String[] f={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
    String[] s={"♥","♣","♦","♠"};
    for(int i=0;i<s.length;i++)
    {
    for(int j=0;j<f.length;j++)
    {
    list.add(s[i]+f[j]);
    }
    }

    Collections.shuffle(list);
    for(int i=0;i<players.length;i++)
    {
    System.out.print(players[i]+"的手牌是");
    System.out.println(dealHand(list, 13));


    }
    }

    public static List dealHand(List Ls,int n){
            int sizePai = Ls.size();
            List handView = Ls.subList(sizePai - n, sizePai);
            List hand = new ArrayList(handView);
            handView.clear();
            return hand;
        }
    }
      

  8.   

    小弟刚学java过来看看,学习一下。
      

  9.   

    不就是发牌嘛,不用那么复杂。。System.out.println("开始发牌!!");
    for(int i=0;i<18;i++){
    System.out.println("你的");
    System.out.println("他的");
    System.out.println("我的");
    }
    System.out.println("发完了!!");