首页 / JAVA / Java类卡枚举示例.修订
Java类卡枚举示例.修订
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java类卡枚举示例.修订,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3339字,纯文字阅读大概需要5分钟。
内容图文
![Java类卡枚举示例.修订](/upload/InfoBanner/zyjiaocheng/701/4e37354ac95b4be08832c111511ece2f.jpg)
*任何帮助深表感谢 *
我正在使用java网站上的类卡示例来尝试构建游戏.
http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html
我想分配套装和等级值.我不知道该怎么做..
对于套装,我想做的是分配Heart = 4
diamond = 3,club = 2,spade = 1
排名,ace = 11
杰克,女王,国王= 10
2-10卡的价值..
程序接受用户输入作为手数和每手牌数的参数.
像这样:$java Deal 4 5
所以我想要它打印八个黑桃(8),十个心(40)
基于值…示例spade = 1 * 8
心= 4 * 10
我可以打印手而不是价值……
我的例子
电流输出缩小:
FIVE of CLUBS(0),
DEUCE of SPADES(0),
SEVEN of SPADES(0),
TEN of SPADES(0),
THREE of HEARTS(0),
FOUR of SPADES(0),
THREE of DIAMONDS(0),
[TEN of SPADES, THREE of HEARTS, FOUR of SPADES, THREE of DIAMONDS]
[FOUR of CLUBS, FIVE of CLUBS, DEUCE of SPADES, SEVEN of SPADES]
[QUEEN of HEARTS, SIX of HEARTS, FOUR of HEARTS, KING of DIAMONDS]
C:\Java\a02>
这是两个不同类中的程序代码
import java.util.*;
public class Cards {
public enum Rank {
DEUCE(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(
9), TEN(10), JACK(10), QUEEN(10), KING(10), ACE(11);
private int Rankpoints;
Rank(int points) {
this.Rankpoints = points;
}
public int getRankpoints() {
return this.Rankpoints;
}
}
public enum Suit {
CLUBS(2), DIAMONDS(3), HEARTS(4), SPADES(1);
private int Suitpoints;
Suit(int points) {
this.Suitpoints = points;
}
public int getSuitpoints() {
return this.Suitpoints;
}
}
private final Rank rank;
private final Suit suit;
private Cards(Rank rank, Suit suit) {
this.rank = rank;
this.suit = suit;
}
public Rank rank() {
return this.rank;
}
public Suit suit() {
return this.suit;
}
public String toString() {
return rank + " of " + suit;
}
private static final List<Cards> protoDeck = new ArrayList<Cards>();
// Initialize prototype deck
static {
for (Suit suit : Suit.values())
for (Rank rank : Rank.values())
protoDeck.add(new Cards(rank, suit));
}
public static ArrayList<Cards> newDeck() {
return new ArrayList<Cards>(protoDeck); // Return copy of prototype deck
}
}
这是主要的
import java.util.*;
public class Deal {
public static void main(String args[]) {
int numHands = Integer.parseInt(args[0]);
int cardsPerHand = Integer.parseInt(args[1]);
List<Cards> deck = Cards.newDeck();
Collections.shuffle(deck);
for (Cards card : deck) {
System.out.println(card.rank() + " of " + card.suit() + "("
+ card.getSuitpoints() + ")" + ",");
}
for (int i = 0; i < numHands; i++)
System.out.println(deal(deck, cardsPerHand));
}
public static ArrayList<Cards> deal(List<Cards> deck, int n) {
int deckSize = deck.size();
List<Cards> handView = deck.subList(deckSize - n, deckSize);
ArrayList<Cards> hand = new ArrayList<Cards>(handView);
handView.clear();
return hand;
}
}
当我尝试编译我得到一个错误..
对于
card.getSuitpoints()
错误:找不到符号:方法getSuitpoints()
我发现这很奇怪,因为
card.getRankpoints()
编译..
这是我把它放入枚举的方式吗?
getRankpoints()
返回零.
怎么了?
解决方法:
您在套牌中看到重复的原因是因为您正在迭代两次卡片.
for (Cards suit : deck) // ********* here is where i print the deck ********
{
for (Cards rank : deck) {
System.out.println(rank.rank() + " of " + suit.suit() + ",");
}
}
假设你的甲板发生器工作,迭代一次就足够了:
for (Cards card : deck)
{
System.out.println(card.rank() + " of " + card.suit() + ",");
}
此外,对于代表卡的类,卡可能是比卡更好的名称选择.
要获取该值,您需要添加一个返回它的方法.
Rank(int points)
{
this.Rankpoints = points;
}
public int getRankpoints() {
return this.Rankpoints;
}
然后,当您想要打印值时,可以调用它.
内容总结
以上是互联网集市为您收集整理的Java类卡枚举示例.修订全部内容,希望文章能够帮你解决Java类卡枚举示例.修订所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。