java枚举练习

本文通过一个玩家类的例子,深入探讨了Java中枚举类型的使用,包括枚举的定义、枚举常量的访问以及枚举在实际编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<pre name="code" class="java">package carddemo;

class Card {
	private Cardtype cardtype;
	private Rank rank;
	private Color color;
	private boolean isJoker;

	public Card(Cardtype type, Rank rank) {
		this.rank = rank;
		this.cardtype = type;
		this.isJoker=false;
	}
	public Card(Cardtype cardtype,Color color) {
		this.cardtype=cardtype;
		this.color=color;
		this.isJoker=true;
	}
	public void setColor(Color color) {
		this.color = color;
	}
	public Color getColor() {
		return color;
	}

	public Cardtype getCardtype() {
		return cardtype;
	}

	public void setCardtype(Cardtype cardtype) {
		this.cardtype = cardtype;
	}

	public Rank getRank() {
		return rank;
	}

	public void setRank(Rank rank) {
		this.rank = rank;
	}

	public enum Cardtype {
		HERTS("红桃"), SPADE("黑桃"), DIAMOND("方块"), CLUB("梅花"),JOKER("鬼");
		private String string;

		private Cardtype(String string) {
			this.string = string;
		}

		@Override
		public String toString() {
			return this.string;
		}

	}

	public enum Rank {
		TWO("2"),
		THREE("3"), FOUR("4"), FIVE("5"), SIX("6"), SEVEN("7"), EIGHT("8"), NINE(
				"9"), TEN("10"), JACK("J"), QUEEN("Q"), KING("K"), ACE("A");
		private String string;

		private Rank(String string) {
			this.string = string;
		}

		@Override
		public String toString() {
			return this.string;
		}

	}
	public enum Color{
		RED("大"),
		BLACK("小");
		String  string;
		private Color(String string) {
			this.string=string;
		}
		@Override
		public String toString() {
			return this.string;
		}
	}
	@Override
	public String toString() {/*如果不添加这个方法,直接输出的card为地址;添加这个方法后得到的值,不管是不是toSring(),得到的都会是字符串*/
		if(isJoker){
			return color.toString()+cardtype.toString();
		}else{
			return cardtype.toString()+rank.toString();}
	}

}



玩家类


<pre name="code" class="java">package carddemo;

import java.util.ArrayList;
import java.util.List;

public class Player {
	private String name;
	private int index;
	private List<Card> cards=new ArrayList<Card>();
	public Player(int index,String name) {
		this.name=name;
		this.index=index;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void setIndex(int index) {
		this.index = index;
	}
	public String getName() {
		return name;
	}
	public int getIndex() {
		return index;
	}
	
	public  void add(Card card){
		cards.add(card);
	}
	public List<Card> getCards() {
		return cards;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "第"+index+"玩家"+name+"得到的牌是"+cards;
	}
	
}

主程序
package carddemo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;

import carddemo.Card.Cardtype;
import carddemo.Card.Color;
import carddemo.Card.Rank;

public class CardDemo {

	/**
	 * @author wanghuayan
	 * 
	 */
	public static void main(String[] args) {
		java.util.List<Card> cards=new ArrayList<Card>();
		/*使用枚举的个数逐个添加纸牌*/
		for (Rank rank:Rank.values()) {
			cards.add(new Card(Cardtype.HERTS, rank));
			cards.add(new Card(Cardtype.SPADE, rank));
			cards.add(new Card(Cardtype.DIAMOND, rank));
			cards.add(new Card(Cardtype.CLUB, rank));
		}
		cards.add(new Card(Cardtype.JOKER, Color.BLACK));
		cards.add(new Card(Cardtype.JOKER, Color.RED));
		System.out.println(cards.get(0));
		Collections.shuffle(cards);/*洗牌*/
		System.out.println(cards.size());
		java.util.List<Player> players=new ArrayList<Player>();
		players.add(new Player(1, "我"));
		players.add(new Player(2, "妈妈"));
		players.add(new Player(3, "弟弟"));
		
		Iterator<Card> iterator=cards.iterator();
		int i=0;
		while (iterator.hasNext()) {
			Card card = (Card) iterator.next();
			players.get(i++%3).add(card);
			iterator.remove();
			if(cards.size()==3){
				break;
			}
		}
		
		System.out.println(players.get(0).toString());
		System.out.println(players.get(1).toString());
		System.out.println(players.get(2).toString());
		System.out.println(cards);
	}
	


}




                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值