Я пишу программу для колоды карт и экспериментирую с объектом card
, который содержит 3 переменные: rank
, value
и suit
.
Я сделал объект карты и дал ему значение 3 червей. (suit = Hearts, Rank = Three, value = 3
). и добавьте его в список с именем cards
.
. Затем я изменю значения предыдущего объекта карты на 4 Червы. (suit = Hearts, Rank = Four, value = 4
) и добавьте это в список cards
.
Однако, когда я печатаю значения deck[0],
(3 из сердец) и deck[1]
(4 из сердец), мой вывод это: [Hearts, Four, 4]
[Hearts, Four, 4]
Я понимаю, почему это происходит, я меняю объект, который я помещаю в список, и значения обновляются соответственно.
Есть ли способ, которым я мог бы как-то «отключить» объект, который я поместил в список, от объекта, который я изменяю? Я серьезно не хочу делать 52 объекта для всех карт.
Мой код:
Объект карты :
class Card
{
private static String suit;
private static String rank;
private static int value;
public Card() {
}
public Card(String s, String r, int v) {
suit = s;
rank = r;
value = v;
}
public static void setValues(String s, String r, int v) {
suit = s;
rank = r;
value = v;
}
public static void toString(Card card) {
System.out.println("[" + card.suit + ", " + card.rank + ", " + card.value + "]");
}
}
Основной код:
public void test() {
Card card = new Card("Hearts", "Three", 3); //Making 3 of Hearts
cards[0] = card; //Assigning to slot 0 in cards
Card.setValues("Hearts", "Four", 4); //Changing values to 4 of Hearts
cards[1]= card; //Assigning to slot 1 in cards
Card.toString(cards[0]);
Card.toString(cards[1]);
}
}
быстрое редактирование: изменение "Card.setValues" на "card.setValues" мало что сделал, но я подумал, что дам вам знать