Java 使用循环创建一组实例

Java 使用循环创建一组实例,java,Java,我试图创建一副牌,从而创建一个类的52个实例,该类允许我指定卡号和套装。例如,Card(2,“Clubs”)将实例化一张值为2的卡和suit Clubs 我使用以下代码来循环进程并将其存储在数组中,而不是将其键入52次。这很有效,但我想看看我是否能做得更好。使用这么多if/else编码看起来相当糟糕。试图将西装存储在枚举中,但我无法调用它。它似乎与字符串不匹配 此外,这种方法意味着,当我看到杰克、皇后、国王、王牌的图片卡时,我会得到更多的if/else。如果有更好的方法,请提供建议。谢谢 Car

我试图创建一副牌,从而创建一个类的52个实例,该类允许我指定卡号和套装。例如,Card(2,“Clubs”)将实例化一张值为2的卡和suit Clubs

我使用以下代码来循环进程并将其存储在数组中,而不是将其键入52次。这很有效,但我想看看我是否能做得更好。使用这么多if/else编码看起来相当糟糕。试图将西装存储在枚举中,但我无法调用它。它似乎与字符串不匹配

此外,这种方法意味着,当我看到杰克、皇后、国王、王牌的图片卡时,我会得到更多的if/else。如果有更好的方法,请提供建议。谢谢

Card[] cards = new Card[52];  

int i = 0; 
for(int x=0; x < 4; x++){
      for(int y=2; y < 15; y++){
          if(x == 0){
              cards[i] = new Card(y, "CLUBS");  
          }
          else if(x == 1){
              cards[i] = new Card(y, "DIAMONDS"); 
          }
          else if(x == 2){
              cards[i] = new Card(y, "HEARTS"); 
          }
          else{
              cards[i] = new Card(y, "SPADES"); 
          }
          i++; 
      }
 }
Card[]cards=新卡[52];
int i=0;
对于(int x=0;x<4;x++){
对于(int y=2;y<15;y++){
如果(x==0){
卡[i]=新卡(y,“俱乐部”);
}
else如果(x==1){
卡[i]=新卡(y,“钻石”);
}
else如果(x==2){
卡片[i]=新卡片(y,“红心”);
}
否则{
卡片[i]=新卡片(y,“黑桃”);
}
i++;
}
}

尝试使用将类型索引映射到类型字符串的
java.util.Map

final Map<Integer, String> types = new HashMap<Integer, String>();
types.put(0, "CLUBS");
types.put(1, "DIAMONDS");
// ...

int i = 0; 
for(int x=0; x < 4; x++){
    for(int y=2; y < 15; y++){
        cards[i] = new Card(y, types.get(x));  
        i++;
    }
}
final Map types=new HashMap();
类型。put(0,“梅花”);
类型。投入(1,“钻石”);
// ...
int i=0;
对于(int x=0;x<4;x++){
对于(int y=2;y<15;y++){
卡片[i]=新卡片(y,type.get(x));
i++;
}
}

尝试使用将类型索引映射到类型字符串的
java.util.Map

final Map<Integer, String> types = new HashMap<Integer, String>();
types.put(0, "CLUBS");
types.put(1, "DIAMONDS");
// ...

int i = 0; 
for(int x=0; x < 4; x++){
    for(int y=2; y < 15; y++){
        cards[i] = new Card(y, types.get(x));  
        i++;
    }
}
final Map types=new HashMap();
类型。put(0,“梅花”);
类型。投入(1,“钻石”);
// ...
int i=0;
对于(int x=0;x<4;x++){
对于(int y=2;y<15;y++){
卡片[i]=新卡片(y,type.get(x));
i++;
}
}

你可以用这样的东西来搭配西装

for(int x=0; x < 4; x++) {
  // Perhaps getSuit(x)?
  String suit = "CLUBS";
  if (x == 1) suit = "DIAMONDS";
  else if (x == 2) suit = "HEARTS";
  else if (x == 3) suit = "SPADES";
  //--------------------

  for(int y=2; y < 15; y++) {
    cards[i] = new Card(y, suit);
    i++;
  }
}
for(int x=0;x<4;x++){
//也许是西服(x)?
字符串suit=“俱乐部”;
如果(x==1)suit=“钻石”;
如果(x==2)suit=“HEARTS”;
如果(x==3)suit=“SPADES”;
//--------------------
对于(int y=2;y<15;y++){
卡片[i]=新卡片(y,套装);
i++;
}
}

您也可以将套装移动到
枚举

然后您可以使用类似的方式设置套装

for(int x=0; x < 4; x++) {
  // Perhaps getSuit(x)?
  String suit = "CLUBS";
  if (x == 1) suit = "DIAMONDS";
  else if (x == 2) suit = "HEARTS";
  else if (x == 3) suit = "SPADES";
  //--------------------

  for(int y=2; y < 15; y++) {
    cards[i] = new Card(y, suit);
    i++;
  }
}
for(int x=0;x<4;x++){
//也许是西服(x)?
字符串suit=“俱乐部”;
如果(x==1)suit=“钻石”;
如果(x==2)suit=“HEARTS”;
如果(x==3)suit=“SPADES”;
//--------------------
对于(int y=2;y<15;y++){
卡片[i]=新卡片(y,套装);
i++;
}
}

您还可以将西装移动到
枚举

使用
列表
进行西装:

List<String> suits = new ArrayList<String>();
suits.add("CLUBS");
suits.add("DIAMONDS");
suits.add("HEARTS");
suits.add("SPADES");

Card[] cards = new Card[52];
int i = 0;
for (String suit : suits) {
    for (int y = 2; y < 15; y++) {
        cards[i] = new Card(y, suit);
        i++;
    }
}
在这种情况下,循环将更改为:

for (Suit suit : Suit.values()) {
    for (int y = 2; y < 15; y++) {
        cards[i] = new Card(y, suit.name());
        i++;
    }
}
for(Suit:Suit.values()){
对于(int y=2;y<15;y++){
卡片[i]=新卡片(y,suit.name());
i++;
}
}

对西装使用
列表

List<String> suits = new ArrayList<String>();
suits.add("CLUBS");
suits.add("DIAMONDS");
suits.add("HEARTS");
suits.add("SPADES");

Card[] cards = new Card[52];
int i = 0;
for (String suit : suits) {
    for (int y = 2; y < 15; y++) {
        cards[i] = new Card(y, suit);
        i++;
    }
}
在这种情况下,循环将更改为:

for (Suit suit : Suit.values()) {
    for (int y = 2; y < 15; y++) {
        cards[i] = new Card(y, suit.name());
        i++;
    }
}
for(Suit:Suit.values()){
对于(int y=2;y<15;y++){
卡片[i]=新卡片(y,suit.name());
i++;
}
}

为了不使用多个循环,您可以执行以下操作

Card[] cards = new Card[52];
String type = "";
for(int i=0; i<52; i++) {
     if (i<13) type = "CLUBS";
     else if (i<26) type = "DIAMONDS";
     else if (i<39) type = "HEARTS";
     else type = "SPADES";
     cards[i] = new Card(i%13, type);
}
Card[]cards=新卡[52];
字符串类型=”;

对于(int i=0;i为了不使用多个循环,可以执行以下操作

Card[] cards = new Card[52];
String type = "";
for(int i=0; i<52; i++) {
     if (i<13) type = "CLUBS";
     else if (i<26) type = "DIAMONDS";
     else if (i<39) type = "HEARTS";
     else type = "SPADES";
     cards[i] = new Card(i%13, type);
}
Card[]cards=新卡[52];
字符串类型=”;
对于(int i=0;iSlow way:)

for(字符串卡片类型:“梅花钻石心黑桃”。拆分(“”){
对于(int i=2;i<15;i++){
卡片[i]=新卡片(i,卡片类型);
}
}
慢方式:)

for(字符串卡片类型:“梅花钻石心黑桃”。拆分(“”){
对于(int i=2;i<15;i++){
卡片[i]=新卡片(i,卡片类型);
}
}