Java 类卡枚举示例。修改

2024-07-04

*任何帮助深表感谢 *

我正在使用 java 网站上的类卡示例来尝试构建游戏。

http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html

我想分配花色和等级值。我不知道该怎么做..

为了适合,我想做的是指定 Heart = 4 方块 = 3,梅花 = 2,黑桃 = 1

对于排名,Ace = 11 杰克、皇后、国王 = 10
卡的价值为2-10..

该程序接受用户输入作为手数和每手牌数的参数。 像这样: $ java Deal 4 5

所以我希望它打印黑桃八(8),红桃十(40)

基于值..示例黑桃 = 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;
    }
}

当我尝试编译时出现错误.. 为了

卡.getSuitpoints()

错误:找不到符号:方法 getSuitpoints()

我觉得这很奇怪,因为

卡.getRankpoints() 编译.. 这是我将其放入枚举的方式吗?

获取Rankpoints() 返回零。 怎么了?


您在牌组中看到重复的原因是因为您对卡片进行了两次迭代。

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() + ",");  
} 

Also, Card可能是一个更好的名字选择Cards对于代表一张卡片的类。

要获取该值,您需要添加一个返回该值的方法。

Rank(int points)
{
    this.Rankpoints = points;  
}

public int getRankpoints() {
    return this.Rankpoints;
}

然后当你想打印该值时可以调用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 类卡枚举示例。修改 的相关文章

  • 如何在 C++ 中最有效地将像素数组渲染到窗口?

    到目前为止 我一直在使用 SDL 2 0 将像素数组复制到纹理中 然后在屏幕上渲染 我的渲染方法如下所示 for int i 0 i lt WIDTH HEIGHT i pixels i 0xFFFF0000 pixel Format AA
  • 是否有一个数字“值等于”?

    默认情况下 Java 是这样的二进制数字提升 http docs oracle com javase specs jls se7 html jls 5 html jls 5 6 2对于基元 但不会对对象执行相同的操作 这是一个快速测试来演示
  • 从 Spring 服务器请求获取字符串主体

    我试图从请求正文中获取简单的字符串 但不断收到错误 Handler RestController public class GreetingHandler public Mono
  • Swing JEditorPane CSS 功能

    我正在 Swing JEditorPane 中显示 HTML 内容 为了更改 HTML 的默认外观 我使用了 CSS 样式表 这很好用 我的问题只是 JEditorPane 不支持完整的 CSS 规范 是否有 JEditorPane 支持的
  • 为什么 Stream 没有 toList() 方法?

    使用 Java 8 流时 获取一个列表 从中创建一个流 执行业务并将其转换回来是很常见的 就像是 Stream of 2 1 2 5 filter n gt n gt 0 map n gt n n collect Collectors to
  • Java 8 模块与 OSGi 有何不同?

    Java 8 和 Jigsaw 项目为 SDK 带来了模块系统 我认为这是一件好事 因为它是软件包的一部分 内置 OSGi 还提供了一个模块系统 但需要一个容器 但除此之外 它们之间的主要区别是什么 如果我使用 OSGi 我是否能够使用标准
  • 使用文件服务 URL 从 blobstore 删除文件

    在我的应用程序 GAE 上的 GWT 中 我们将存储在 blobstore 上的服务 URL 存储在数据库中 当用户选择这些文件之一并单击 删除 时 我们需要从 blobstore 中删除该文件 这是我们的代码 但它根本没有删除文件 pub
  • 隐藏另一个布局的浮动操作按钮

    我有一个FloatingActionButton五月之内activity main xml名为的布局fabBtn 我的应用程序是用ViewPager和三个Fragments 我想隐藏FloatingActionButton当我的第一次Fra
  • 如何在 ADF Oracle 11gR1 中的对话框窗口中的弹出窗口中刷新表

    我正在研究显示一个带有搜索表的弹出窗口的要求 当用户单击弹出窗口中的搜索按钮 提供输入文本框 时 需要使用新的数据集刷新搜索表 我创建了一个populateSearchTable 通过填充数组中的值来生成表的方法deviceListArra
  • Java JDK中有并发List吗?

    如何创建一个并发 List 实例 在其中可以按索引访问元素 JDK 有我可以使用的类或工厂方法吗 ConcurrentLinkedQueue 如果您不关心基于索引的访问 而只想要列表的插入顺序保留特性 那么您可以考虑java util co
  • 如何知道机器的堆栈在内存中是向上还是向下增长? (JAVA)

    我有一个 C 程序来检查机器堆栈在内存中是向上还是向下增长 事情是这样的 include
  • 优化xstream的加载速度

    当我尝试从 XML 文件执行加载时 我感觉 xstream 加载速度达不到我的要求 为了 一个有 10k 条目的 数据库 需要几分钟 以下是我用来序列化的整个数据结构 列表的大小 符号和代码 将为 大约 10k 条目 有什么方法我可以尝试
  • Java 类卡枚举示例。修改

    任何帮助深表感谢 我正在使用 java 网站上的类卡示例来尝试构建游戏 http java sun com j2se 1 5 0 docs guide language enums html http java sun com j2se 1
  • 使用 Apache CXF 2.4 JAX-RS 和 Spring Security 3.2 获取用户名

    我在 JAX RS 资源中获取用户名SecurityContextHolder这有效 Path myresource public class MyResoure Get public String getUserName return S
  • 使用lib添加自定义字体android

    我正在使用 android 自定义字体 lib Calligraphyhttps github com chrisjenx Calligraphy https github com chrisjenx Calligraphy 但对textv
  • 如何限制匿名子类的创建(Java)

    抱歉 我之前没有正确表述这个问题 我尝试实现工厂模式 一个更好的例子 它是一个带有 create 函数的抽象类 Human 根据创建时传递的参数 它决定是返回其子类 Man 的实例还是返回 Woman 子类的实例 因此 您可以使用以下命令调
  • CacheStoreMode USE 和 REFRESH 有什么区别

    javadoc 为缓存存储模式 http docs oracle com javaee 6 api javax persistence CacheStoreMode html区分我无法真正理解的一点 javadoc 为USE mode 从数
  • 为什么 List.contains() 在 Collections Java 中将 Object 作为参数 [重复]

    这个问题在这里已经有答案了 The java util List contains Object o 方法需要Object作为参数并在内部使用Object equals Object o 如上所述here http docs oracle
  • 构建失败:程序类型已存在:com.facebook.ads.Ad

    我尝试在 Android Studio 中构建一个模块 它似乎可以在设备上运行 但是当我尝试构建 APK 时 出现错误 Program type already present com facebook ads Ad 这是完整的日志 org
  • 如何在 eclipse 中安装最新版本的 Xuggler(5.4,截至 18/05/2013)?

    我真的不知道从哪里开始这样做 我已经从网站下载了必要的 Jar 并对如何在 Eclipse 中安装 Xuggler 进行了一些研究 但所有内容都已过时或不相关 我的系统是 64 位 Windows 8 大多数在 Vista 和 Window

随机推荐