题目要求:
* 新建一副牌,52张,4种花色,每一种都有13张
* 随机洗牌
* 每次顺序抽取两张,如果两张牌的牌面值想通过,记录一次
* 直到抽完为止
* 最后输出一共记录了多少次
Card.java代码如下:
package com.shuobaotang.interview;
public class Card {
private int number;//牌面值
private String color;//牌面花色
public Card(int number,String color){
this.number = number;
this.color = color;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public String toString(){
return number+":"+color;
}
}
CountCards.java代码如下:
package com.shuobaotang.interview;
/**
* 新建一副牌,52张,4种花色,每一种都有13张
* 随机洗牌
* 每次顺序抽取两张,如果两张牌的牌面值想通过,记录一次
* 直到抽完为止
* 最后输出一共记录了多少次
* @author yangjianzhou
*
*/
public class CountCards {
public static void main(String[] args) {
CountCards cc = new CountCards();
Card[] cards = cc.createCards();
Card[] cs = cc.refreshCards(cards);
System.out.println(cc.getCount(cs));
}
public Card[] createCards(){
Card [] cards = new Card[52];
int i;
for(i =1;i<=13;i++){
Card card1 = new Card(i,"黑");
Card card2 = new Card(i,"红");
Card card3 = new Card(i,"梅");
Card card4 = new Card(i,"方");
cards[(i-1)*4]=card1;
cards[(i-1)*4+1]=card2;
cards[(i-1)*4+2]=card3;
cards[(i-1)*4+3]=card4;
}
return cards;
}
public Card[] refreshCards(Card[] cards){
int [] aa = new int[52];
Card[] cs = new Card[52];
int i;
for(i=0;i<52;i++){
while(true){
int index = (int)(Math.random()*52);
if(aa[index]==0){
cs[i]=cards[index];
aa[index]=1;
break;
}
}
}
return cs;
}
public int getCount(Card[] cards){
int count =0;
int i;
for(i=0;i<52;i=i+2){
Card card1 = cards[i];
Card card2 = cards[i+1];
if(card1.getNumber()==card2.getNumber()){
count++;
System.out.println(card1);
System.out.println(card2);
System.out.println("======================");
}
}
return count;
}
}
第一次运行结果:
6:黑
6:方
======================
12:方
12:梅
======================
2
第二次运行结果:
10:方
10:黑
======================
1