将两个字符串附加到Java中的一个Array中的一个索引

时间:2013-07-31 10:42:35

标签: java arrays list for-loop append

我已经按照我现在想要的方式修复了它。如果其他人有同样的问题,我认为这是尝试建立一副牌的最简单,最有效的方法。您可以使用随机变量[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]);

        }

    }

}

3 个答案:

答案 0 :(得分:2)

您应该在字符串中添加参数类型并创建Pair类。请注意,对于泛型,您将需要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 + ")";
     }
}

然后,您可以使用相应的Pair方法Listget来使用此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)));             

    }

}

如果您覆盖toString的{​​{1}}方法,您还可以Pair获取System.out.println(deck)所需的字符串表示。

答案 1 :(得分:0)

可能你需要改变这个

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

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

因为你的想法是连接列表中的元素并将其添加到套牌列表中。

答案 2 :(得分:0)

您不能在List的一个索引处存储两个值。但你可以做的是

选项1
存储连接\字符串如

更改

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

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

然后输出牌组[2] =套装,面对

选项2 将字符串列表更改为Object列表,此对象包含诉讼和面部的详细信息

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

// getter and setters;
}

和列表变为

List<Deck> deck

并将条目添加为

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