【问题标题】:Making a deck of cards on Java using arrays and objects?使用数组和对象在 Java 上制作一副纸牌?
【发布时间】:2017-11-19 12:21:28
【问题描述】:

我的教科书给了我这段代码,说它将创建一组新的 52 张卡片。我不是很明白它是做什么的,因为我在google上看到的方法和这个有很大的不同。我对“索引”变量的作用以及如何打印此方法感到困惑?我确实有一个 printdeck 方法,但是如果该方法不返回任何数字,我将如何调用该方法?

 public static void buildDeck () {
    Card[] deck = new Card [52];
 int index = 0;
 for (int suit = 0; suit <=3; suit++) {
     for (int rank = 1; rank <= 13; rank++) {
         deck[index] = new Card (suit, rank);
         index++;
     }

}

//here is my printDeck method
public static void printCard (Card c) {
    String[] suits = { "Clubs", "Diamonds", "Hearts", "Spades" };
    String [] ranks = { "nart", "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "Queen", "king" };
    System.out.println (ranks[c.rank] + " of " + suits[c.suit]);
}
public static void printDeck (Card[] deck) {
    for (int i = 0; i< deck.length; i++) {
        printCard (deck[i]);
    }
}

我将不胜感激,谢谢!

【问题讨论】:

  • 你的教科书不应该也解释代码的作用吗?此外,您的问题到底出在哪里有点不清楚 - index 只是一个 int 变量(用于访问数组中的元素)
  • 那个 buildDeck 方法不对。一旦方法完成,deck 变量将超出范围且无法访问。
  • 建个私人套牌马上扔掉???你的教科书给了你业余时间的垃圾?我认为你需要一本更好的教科书!
  • @UnholySheep 教科书基本上只是说这是我应该使用的方法,并没有真正多说
  • @celinatala,好吧,如果它说你应该使用这个,那么我可以很肯定地说你应该忽略那本书的内容。

标签: java arrays object playing-cards


【解决方案1】:

索引变量,如名称所述,用作牌组的计数索引。

printDeck(..) 方法应该通过调用 printCard(..) 方法将整个打印到控制台,然后该方法返回调用 System.out.println

【讨论】:

    【解决方案2】:
    • printDeck 方法并没有真正打印到控制台。它需要一组卡片,并为每张卡片调用 printCard 方法(提供当前卡片作为参数)。
    • printCard 方法采用 - 如前所述 - 一张卡片并将其等级 /suite 打印到控制台。

      public static void printCard (Card c) { System.out.println(ranks[c.rank] + " of " + suits[c.suit]); }

    使用index 变量,例如初始化卡片组。

    • 最初,数组中有 52 张“空白”卡片,或者更好地说,数组中的每个条目都是空的。
    • 在每次迭代中,您都将创建一个new Card,并且必须将其分配到卡组中的某个位置。这是通过index 完成的,每次迭代都会增加它。

    【讨论】:

    • 当我打印 buildDeck 方法时,为什么它只打印“俱乐部”套装?并且在 2 个俱乐部和 3 个俱乐部之间出现错误,说“线程“主”java.lang.NullPointerException 中的异常”?
    • 我建议您使用调试器找出 NullPointerException 的原因。这个例外也可以解释为什么你只关注俱乐部。
    【解决方案3】:

    你应该从你的 buildDeck 方法中返回 card[] 牌组,然后将它传递给 print 方法。

    【讨论】:

      猜你喜欢
      • 2020-09-30
      • 1970-01-01
      • 2014-02-27
      • 2022-11-25
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多