【问题标题】:Having trouble calling a void method on an arraylist?在数组列表上调用 void 方法时遇到问题?
【发布时间】:2015-12-07 01:27:43
【问题描述】:

我正在尝试制作纸牌游戏。在一个课程中,我有方法为玩家和经销商制作手牌,而在另一个课程中,我正在执行游戏。我的问题是,当我尝试为我的玩家手牌创建一个数组列表时,我无法调用 void 方法将卡片添加到列表中,并且不确定如何在没有错误的情况下这样做?

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

    addCards 方法是一个 void 方法。因此它不会返回任何东西。但是在代码中,您试图将其分配给变量。那是编译错误。 删除该分配部分。

    【讨论】:

    • 但是如果我只对上一个类中的对象调用 addCards 方法,在这种情况下是输入,那么我该如何将卡片放入 ArrayList 中?
    • 这取决于你的设计,你想用 addCards 方法做什么?
    • 我想为玩家生成一手牌,就像在扑克中一样。所以我试图立即给 ArrayList 玩家 2 张牌,这些牌来自于从牌组中取出一张牌并将它们发送到 ArrayList
    • 我不太确定我是否正确理解了您的用例。您可以从该方法返回数组列表。然后您就可以将其分配给变量
    • arrayList 来自哪个方法?我知道如果我更改我的 addCards 方法以返回一个 arrayList,这会有效,但我想保持它无效,所以我不确定你的建议是什么
    【解决方案2】:

    deck.remove() 是它不满意的 void 方法。您正在使用deck.remove,就好像它会返回一些东西并且将一些东西传递给addCards。

    【讨论】:

    • remove 方法会返回一些东西!它返回从卡组中移除的卡 C
    【解决方案3】:

    假设 CardPile 有办法检索它的卡片(通过 getter 方法或其他方式),那么我不明白为什么你不能这样做:

    input.addCards(deck.remove(0));
    player.add(input.pop()); // or whatever the getter method for `CardPile` is
    

    【讨论】:

    • 我收到一个编译器错误,提示我无法将 ArrayList 转换为 Card
    • 您可以编辑您的问题并发布您正在使用的所有代码吗?根据您在问题中布置个人代码 sn-ps 的方式,很难理解什么是什么。请发布整个源文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 2018-12-21
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多