Java 创建对象数组9

Java 创建对象数组9,java,arrays,Java,Arrays,我正试图创造一副牌。牌组应该是一个数组,每张牌都应该是一个对象 Card(int value, String name, int suit) int值是卡的等级:二=2,三=3。,杰克=11 字符串名称是“二”,“三,…,”Ace“ 整数套装可以是:0、1、2或3。其中0=梅花,1=钻石,2=红桃,3=黑桃 我知道如何创建Card对象。我遇到的问题是何时创建Card[]牌组数组。 显然,我可以一次做一件: Card[] deck = new Card[52]; deck[0] = new Ca

我正试图创造一副牌。牌组应该是一个数组,每张牌都应该是一个对象

Card(int value, String name, int suit)
int值是卡的等级:二=2,三=3。,杰克=11

字符串名称是“二”,“三,…,”Ace“

整数套装可以是:0、1、2或3。其中0=梅花,1=钻石,2=红桃,3=黑桃

我知道如何创建Card对象。我遇到的问题是何时创建Card[]牌组数组。 显然,我可以一次做一件:

Card[] deck = new Card[52];
deck[0] = new Card(2, "Two", 0); // Two of clubs, value = 2
deck[1] = new Card(3, "Three", 0); // Three of clubs, value = 3

但是使用循环会很好。但是我无法正确地进行操作。

您需要先创建一个数组,以将卡的值与其名称进行映射

例如

然后可以使用嵌套循环

Card[] deck = new Card[52];
int count = 0;
for(int i = 0; i < 4; i++) {
  for(int j = 2; j < 15; j++) {
    deck[count] = new Card(j, cardNames[j], i);
  }
  count++;
}
Card[]deck=新卡[52];
整数计数=0;
对于(int i=0;i<4;i++){
对于(int j=2;j<15;j++){
卡片组[计数]=新卡片(j,卡片名[j],i);
}
计数++;
}
试试这个(循环可以做得更好,但想给你一个想法)

import java.util.HashMap;
导入java.util.Iterator;
导入java.util.Map;
公共类卡片示例{
公共静态void main(字符串[]args){
卡片[]卡片组=新卡片[52];
Map cardSeq=新的HashMap();
卡片顺序卖出(1,“Ace”);
卡片顺序卖出(2,“两”);
卡片顺序卖出(3,“三”);
卡片顺序卖出(4,“四”);
卡片顺序卖出(5,“五”);
卡片顺序看跌期权(6,“六”);
卡片顺序卖出(7,“七”);
卡片顺序卖出(8,“8”);
卡片顺序卖出(9,“9”);
卡片顺序看跌期权(10,“十”);
卡片顺序放置(11,“插孔”);
cardSeq.put(12,“女王”);
信用证(13,“国王”);
int计数器=0;

对于(int i=0;i首先,实际上不需要显式存储排名名称(Ace,2,3…),您可以创建一个方法,根据排名值返回排名名称。我将重新设计您的
类,如下所示

class Card {
    private int suit, rank;

    Card(int suit, int rank) {
        this.suit = suit;
        this.rank = rank;
    }

    public String getRankName() {
        switch(rank)
        {
        case 11:
            return "J";
        case 12:
            return "Q";
        case 13:
            return "K";
        case 14:
            return "A";
        default:
            return Integer.toString(rank);
        }
    }

    //other getters, setters, methods....
}
接下来,只需使用嵌套for循环来创建
对象

Card[] deck = new Card[52];
int index = 0;
for(int i = 0; i < 4; ++i) {
  for(int j = 2; j < 15; ++j) {
    deck[index] = new Card(i, j);
  }
  ++index;
}
Card[]deck=新卡[52];
int指数=0;
对于(int i=0;i<4;++i){
对于(int j=2;j<15;++j){
卡片组[索引]=新卡片(i,j);
}
++指数;
}

您能告诉我们您失败的尝试吗?这样我们可以指出错误,而不是为您提供新的解决方案。您尝试了哪些循环?是否有效?请参阅Oracle的Java教程。如果您需要更具体的帮助,请问更具体的问题,而不是简单地说“我做不好”“.你尝试了什么?为什么失败了?尝试一个嵌套循环!你的套装可以像
Suit.SPADES
等等,
Suit
是一个枚举,没有“俱乐部之一”…你还在寻找答案吗?”?
class Card {
    private int suit, rank;

    Card(int suit, int rank) {
        this.suit = suit;
        this.rank = rank;
    }

    public String getRankName() {
        switch(rank)
        {
        case 11:
            return "J";
        case 12:
            return "Q";
        case 13:
            return "K";
        case 14:
            return "A";
        default:
            return Integer.toString(rank);
        }
    }

    //other getters, setters, methods....
}
Card[] deck = new Card[52];
int index = 0;
for(int i = 0; i < 4; ++i) {
  for(int j = 2; j < 15; ++j) {
    deck[index] = new Card(i, j);
  }
  ++index;
}