Вложенный цикл for для печати набора значений из списка массивов

#java #arraylist #enums

#java #arraylist #перечисления

Вопрос:

Я создаю программу для отображения списка массивов покерных колод. Пока что у меня есть два набора перечислений, которые являются мастями и рангами. Я могу отобразить их как таковые

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, но безрезультатно

 {
    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);
 }
  

Ответ №1:

Попробуйте это:

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

Ответ №2:

Попробуйте это:

 {
    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));
        }
    }
}
  

Ответ №3:

Попробуйте это,

 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));
        }
    }
}