java洗牌算法问题

Python016

java洗牌算法问题,第1张

你指的是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=0i<52i++)

        {

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

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

            }

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

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

        }

    }

//牌类

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())

}

}

}