「java洗牌代码」java实现洗牌算法

博主:adminadmin 2023-01-05 22:21:05 904

今天给各位分享java洗牌代码的知识,其中也会对java实现洗牌算法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

用java ArrayList集合编写扑克牌洗牌与发牌

import java.util.ArrayList;

import java.util.Random;

public class PokerDemo {

ArrayListCard poker = new ArrayListCard();

Player[] players;

int n = 4;

String[] name = {"Wang", "Zhang", "Li", "Yuan"};

public PokerDemo() {

players = new Player[n];

for(int i = 0; i players.length; i++)

players[i] = new Player(name[i]);

for(int i = 0; i 4; i++)

for(int j = 0; j 13; j++)

poker.add(new Card(i, j));

System.out.println("洗牌前: " + poker);

xipai();

System.out.println("洗牌后: " + poker);

fapai();

System.out.println("发牌后: ");

for(int i = 0; i players.length; i++)

System.out.println(players[i]);

}

public void xipai() {

Random r = new Random();

ArrayListCard tmp = new ArrayListCard();

while(!poker.isEmpty()) {

int index = r.nextInt(poker.size());

Card card = poker.get(index);

tmp.add(card);

poker.remove(index);

}

poker = new ArrayListCard(tmp);

}

public void fapai() {

int p = 0;

while(!poker.isEmpty()) {

Card card = poker.get(0);

players[p].add(card);

p = (p + 1) % n;

poker.remove(0);

}

}

public static void main(String[] args) {

new PokerDemo();

}

}

class Card {

int val, sty;

final String[] value = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};

final String[] style = {"黑桃", "红心", "梅花", "方块"};

public Card(int s, int v) {

sty = s;

val = v;

}

public String toString() {

return style[sty]+ " " + value[val];

}

}

class Player {

ArrayListCard cards = new ArrayListCard();

String name;

public Player(String n) {

name = n;

}

public void add(Card card) {

cards.add(card);

}

public String toString() {

return name + ":\t" + cards;

}

}

用java撰写一个简单的洗牌程序,可在文本模式下显示洗牌结果

//牌类

public class Card {

private int face; //牌的面值

private int suit;  //牌的花色

public Card(int face, int suit) {

super();

this.face = face;

this.suit = suit;

}

public int getFace() {

return face;

}

public void setFace(int face) {

this.face = face;

}

public int getSuit() {

return suit;

}

public void setSuit(int suit) {

this.suit = suit;

}

}

//模拟洗牌和发牌

public class Test {

public static void main(String[] args) {

Card[] deck = new Card[52];

fillDeck(deck);

deal(deck);

System.out.println();

}

private static void fillDeck(Card[] deck) {

int i, j=0;

for (i = 0; i  52; i++) {

j = (int) (Math.random() * 52);

deck[i]=new Card(j%13,j/13); 

}

}

private static void deal(Card[] deck) {

int k1, k2;

System.out.println();

for (k1 = 0, k2 = k1 + 26; k1  26; k1++, k2++) {

if (k1 % 13 == 0)

System.out.println("\n第" + (k1 / 13 + 1) + 

"组牌:\t\t\t第"+ (k1 / 13 + 3) + "组牌:");

System.out.print("\nCard:  " + deck[k1].getFace() + 

"  Suit:  "+ deck[k1].getSuit());

System.out.print("\t\t\tCard:  " + deck[k2].getFace() + 

"  Suit:  "+ deck[k2].getSuit());

}

}

}

java洗牌算法问题

你指的是Card里的toString方法吧

 public String toString() {

  String aa = suit + " " + num + "  ";

  return aa;

 }

toString这个方法一般在 System.out.print时使用,这个是打印出String,JVM就是默认调用类的toSting方法

注:所有类都有toString方法,默认是当前对象的hashcode,即内存地址

所以在发牌是打印

 public void dealcard()//发牌

    {

        for(int i=0;i52;i++)

        {

            if(i%4==0i!=0){

             System.out.println();  //每发4张牌输出换行

            }

            // 就是这里,默认调用card的toString方法

             System.out.print(card[i]); //依次输出 发的牌

        }

    }

关于java洗牌代码和java实现洗牌算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。