【问题标题】:How to transfer class data from a Array to a ArrayList [duplicate]如何将类数据从 Array 传输到 ArrayList [重复]
【发布时间】:2014-10-13 03:35:29
【问题描述】:

让我向您介绍我的问题的组成部分。在 main 方法中创建的一个名为 cards 的数组。一个名为 Card 的类,它有 2 个类变量,花色和数字。 一个名为 ph 的 ArrayList(代表 playerHand)在一个名为 Hand 的公共类中,最后是一个名为 counter 的静态公共变量。那么现在让我解释一下我的困境。

在主方法中,数组卡片包含 52 个卡片对象,每个卡片对象都有自己的数据。 在 hand 类中,我有一个名为 draw() 的方法。

这里是hand类里面的一些代码。

ArrayList<Card> ph = new ArrayList<Card>();
public static int cc = 0;



    void draw() {
ph.add(new Card());

ph.get(cc).num = cards[cc].num;
ph.get(cc).suit = cards[cc].suit;

cc = cc + 1;
}

但是,在 cc = cc + 1 之前的 2 行中出现以下错误。 “卡片无法解析为变量”

如何在 Array 和 ArrayList 之间传输数据?

编辑:这与标记为重复的帖子不同,因为这里的数组位于不同的类中,因此解决方案不起作用。

【问题讨论】:

  • 你应该包含声明数组的代码。
  • 您写道,卡片数组已在 main 方法中声明,但您尝试在 draw 方法中使用它。尝试将其声明为类字段或将此卡片数组作为参数放入 draw 方法中。
  • cc 是什么?您应该提供更多代码
  • 请发布一个更完整的示例。从您提供的代码 sn-p 很难分析您的问题。似乎您应该将卡片作为 draw 方法的参数:'void draw(Card[] cards)'。
  • 您可能需要考虑使用Arrays.asList(),而不是手动处理每张卡片。

标签: java arrays arraylist


【解决方案1】:

但是我在 cc = cc + 1 之前的 2 行出现以下错误。“卡片无法解析为变量”

这意味着您没有以允许draw()查看声明的方式/位置声明cards

你说:

在主方法中,数组卡片包含 52 个卡片对象,每个卡片对象都有自己的数据。

听起来您已将cards 声明为main 方法中的局部变量。局部变量仅在当前方法体中的语句范围内。

cards 数组要么需要声明为封闭类的字段,要么需要作为参数传递给draw。如果没有看到你的完整代码,我不能说哪个会更好。

【讨论】:

    猜你喜欢
    • 2022-12-17
    • 2011-12-07
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多