Прежде всего, вам нужно множество костюмов:
String[] suits = new String[]{"clubs", "hearts", "spades", "diamonds"};
Для инициализации одномерного массива вы можете использовать следующий код:
Card[] cards = new Card[52];
for (int i = 0; i < suits.length; i++) {
for (int j = 0; j < 13; j++) {
cards[i * 13 + j] = new Card(j + 1, suits[i]);
}
}
Если вам нужен двумерный массив, используйте:
Card[][] cards = new Card[4][13];
for (int i = 0; i < suits.length; i++) {
for (int j = 0; j < 13; j++) {
cards[i][j] = new Card(j + 1, suits[i]);
}
}
В конце условие в вашем классе Card
всегда равно false
, потому что !(this.cardValue >= 1 || this.cardValue <= 13)
всегда ложно. Я полагаю, вы ищете что-то вроде этого:
if (this.cardValue < 1 || this.cardValue > 13 ||
!(this.cardSuit.equals("spades") || this.cardSuit.equals("hearts") ||
this.cardSuit.equals("diamonds") || this.cardSuit.equals("clubs"))) {
throw new IllegalArgumentException("This is not a valid playing card!");
}
Ваш getCards()
метод выглядит хорошо и работает как положено. Вот еще несколько вариантов копирования массива:
Arrays.copyOf()
:
Card[] cardsCopy = Arrays.copyOf(cards, cards.length);
System.arraycopy()
:
Card[] cardsCopy = new Card[cards.length];
System.arraycopy(cards, 0, copy3, 0, cards.length);
Array.clone()
Card[] cardsCopy = cards.clone();