在Java中向数组中的一个索引追加两个字符串

在Java中向数组中的一个索引追加两个字符串,java,arrays,list,for-loop,append,Java,Arrays,List,For Loop,Append,我现在已经完全按照我想要的方式修好了。如果其他人也有同样的问题,我认为这是建立一副牌的最简单、最有效的方法。您可以使用deck[random][0]和deck[random][1]中的随机变量来挑选单个卡片。 感谢所有帮助,以下是我的代码: public class NewDeck { public static void main(String[] args) { String[] suits = new String[] { "Clubs", "Diamonds"

我现在已经完全按照我想要的方式修好了。如果其他人也有同样的问题,我认为这是建立一副牌的最简单、最有效的方法。您可以使用deck[random][0]和deck[random][1]中的随机变量来挑选单个卡片。 感谢所有帮助,以下是我的代码:

public class NewDeck {

    public static void main(String[] args) {

        String[] suits = new String[] { "Clubs", "Diamonds", "Spades", "Hearts" };

        String[] faces = new String[] { "Ace", "King", "Queen", "Jack" };

        String[][] deck = new String[suits.length * (faces.length + 9)][2];

        int a = 0;

        for (String y : suits) {

            for (String x : faces) {

                deck[a][0] = x;
                deck[a][1] = y;
                a++;

            }

        }

        for (String y : suits) {

            for (int p = 2; p < 11; p++) {

                deck[a][1] = y;
                String pp = Integer.toString(p);
                deck[a][0] = pp;
                a++;

            }

        }

        for (int p = 0; p < deck.length; p++) {

            System.out.print(deck[p][0] + " of ");
            System.out.println(deck[p][1]);

        }

    }

}
公共类NewDeck{
公共静态void main(字符串[]args){
字符串[]套装=新字符串[]{“梅花”、“钻石”、“黑桃”、“红心”};
字符串[]面=新字符串[]{“Ace”、“King”、“Queen”、“Jack”};
字符串[][]组=新字符串[suits.length*(faces.length+9)][2];
int a=0;
适用于(y系列:套装){
用于(字符串x:面){
甲板[a][0]=x;
甲板[a][1]=y;
a++;
}
}
适用于(y系列:套装){
对于(int p=2;p<11;p++){
甲板[a][1]=y;
字符串pp=Integer.toString(p);
甲板[a][0]=pp;
a++;
}
}
对于(int p=0;p
您可能需要更改此选项

        deck.add(suits[suit], faces[face]);             


因为您的想法是连接列表中的元素并将其添加到组列表中

您应该将参数类型添加到字符串中,并创建一个
类。请注意,泛型需要1.5版或更高版本的Java编译器

class Pair {

     private final String face;  
     private final String suit;  

     Pair(String suit, String face) {
         this.face = face; 
         this.suit = suit;             
     }
     @Override
     public String toString() {
        return "(" + suit + ", " + face + ")";
     }
}
然后,您可以使用适当的
List
方法
get
size
按如下所示使用该
类:

List<Pair> deck = new ArrayList<Pair>();

List<String> suits = new ArrayList<String>();
suits.add("Hearts");
suits.add("Diamonds");
suits.add("Clubs");
suits.add("Spades");

List<String> faces = new ArrayList<String>();
faces.add("Ace");
faces.add("King");
faces.add("Queen");
faces.add("Jack");

for(int suit = 0; suit < suits.size(); suit++){

    for(int face = 0; face < faces.size(); face++){

        deck.add(new Pair(suits.get(suit), faces.get(face)));             

    }

}
List deck=newarraylist();
List suites=new ArrayList();
西装。添加(“红心”);
诉讼。添加(“钻石”);
添加(“俱乐部”);
诉讼。添加(“黑桃”);
列表面=新的ArrayList();
面。添加(“Ace”);
面。添加(“国王”);
加上(“女王”);
面。添加(“杰克”);
对于(int suit=0;suit

如果您重写
Pair
toString
方法,您还可以
System.out.println(deck)
来获得所需的
数组列表的字符串表示形式

,您不能在列表的一个索引中存储两个值。但是你能做的是

选项1
存储连接\string-like

改变

   deck.add(suits[suit], faces[face]);   

然后输出甲板[2]=西装、脸

选项2 将字符串列表更改为对象列表,该对象包含西装和脸部的细节

public class Deck {
    private String suit;
    private String face;

// getter and setters;
}
然后列表变成

List<Deck> deck

它会给你一个编译错误-
deck.add(suits[suit],faces[face]),deck不是地图实例。为什么不创建一个具有两个属性“Suit”和“Face”的类卡?这就是Java的全部内容!@技术白痴:我在for循环中得到一个错误:“长度无法解析或不是一个字段”,并且在-deck上有一个错误。add(suits[suit],faces[face]);-说“表达式的类型必须是数组,但解析为列表”非常有效!但是我恐怕不能完全理解你的所有代码,所以我想我可能需要学习更多的java,然后才能开始制作我目前无法完成的游戏。但是有了你给我的,我也许可以继续制作游戏,我想我只能通过尝试我以前没有做过的事情来学习。非常感谢。由于泛型仅在Java1.5中引入,所以仍然有许多java集合的教程和书籍已经过时。我认为可以从这里开始(简短且包含更多链接)。也许能找到一本好的最新Java书籍?
public class Deck {
    private String suit;
    private String face;

// getter and setters;
}
List<Deck> deck
deck.add(new Deck(suits[suit], faces[face]))