嵌套for循环以从数组列表中打印一组值

时间:2019-04-16 15:43:46

标签: java arraylist enums

我正在创建一个程序来显示扑克牌的数组列表。到目前为止,我有两个枚举集,分别是西装和军衔。我可以将它们显示为

S2 S3 S4 S5 S6 S7 S8 S9 S10 SJ SQ SK SA H2 H3 H4 H5 H6 H7 H8 H9 H10 HJ HQ HK HA D2 D3 D4 D5 D6 D7 D8 D9 D10 DJ DQ DK DA C2 C3 C4 C5 C6 C7 C8 C9 C10 CJ CQ CK CA

但是,有没有一种方法可以使用嵌套的for循环拆分西装并分别显示它们,如下所示?

S2 S3 S4 S5 S6 S7 S8 S9 S10 SJ SQ SK SA H2 H3 H4 H5 H6 H7 H8 H9 H10 HJ HQ HK HA D2 D3 D4 D5 D6 D7 D8 D9 D10 DJ DQ DK DA C2 C3 C4 C5 C6 C7 C8 C9 C10 CJ CQ CK CA

这是我到目前为止尝试过的:

展示平台方法

private static final int MAXC = 13;
private static final int MAXD = 52;

private static void displayDeck(ArrayList<Decks> values)


{
    for (int i = 0; i < MAXD; i++)
    {
    // this prints the entire deck out  
    System.out.printf ("%s", values.get(i));

    }
}

我尝试了嵌套循环,但无济于事

{
    for (int i = 0; i < MAXD; i++)
    {
        for(int j =0; j < MAXC; j++)
        {
    System.out.printf ("%s", values.get(j));
        }
    }
}

添加卡片组方法

    // enhanced for loop to add every single card into the arrayList
private void addDeck(ArrayList<Decks> values)
{
    for(SuitEnum s : SuitEnum.values ())
    {
        for(RankEnum r : RankEnum.values ())
        {
            values.add(new PlayingCard(s,r));
        }
    }

}

主要方法

 public static void main(String args[]) 
 {
      ArrayList<Decks> list = new ArrayList<Decks>();  

      decks test = new decks ();
      test.addDeck(list);
      printDeck(list);
 }

3 个答案:

答案 0 :(得分:0)

尝试一下:

{
    for (int i = 0; i < MAXD; i++)
    {
        for(int j =0; j < MAXC; j++)
        {
           System.out.printf ("%s", values.get(i).get(j));
        }
    }
}

答案 1 :(得分:0)

尝试一下:

{
    for (int i = 0; i < MAXD; i++)
    {
        for(int j =0; j < MAXC; j++)
        {
            int index = i + j * MAXD;
            System.out.printf ("%s", values.get(index));
        }
    }
}

答案 2 :(得分:0)

尝试一下

private void addDeck(ArrayList<Decks> values)
{
    int suiteLength = SuitEnum.values().length;
    int rankLength = RankEnum.values().length;
    for(int i=0; i<suiteLength; i++)
    {
        for(int j=0; j<rankLength; j++)
        {
             int index = rankLength * i + j;
             System.out.printf ("%s", values.get(index));
        }
    }
}