java算法----纸牌的新建、洗牌与计数

题目要求:

 * 新建一副牌,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

你可能感兴趣的:(java算法)