OthK:
J'ai essayé de compter occurences d'un objet dans une liste, mais semble que ça ne fonctionne pas.
voici ma carte de classe:
public class Card {
private int value;
private String type;
private String color;
}
et ici, je suis en train de mettre en place une plate-forme de 104 cartes, contenant 2 occurences de chaque carte, mais ressemble à mon état est incorrect:
public static List<Card> InitializeDeck(){
for(int i=0;i<104;i++){
boolean isOk = true;
while (isOk){
int col = (int) (Math.floor(Math.random() * 2) + 1);
if (col == 1) {
color = "Black";
} else {
color = "Red";
}
value = (int) (Math.floor(Math.random() * 14));
while (value == 0) {
value = (int) (Math.floor(Math.random() * 14));
}
int ty = (int) (Math.floor(Math.random() * 4));
switch (ty) {
case 0:
type = "Spade";
break;
case 1:
type = "Heart";
break;
case 2:
type = "Diamond";
break;
case 3:
type = "Club";
break;
}
Card card = new Card(value, type, color);
if(deck.isEmpty() || deck.stream().filter(line -> card.equals(line)).count()<=1){
deck.add(card);
isOk=false;
}
}
}
return deck;
}
Je reçois un paquet de 104 cartes, mais avec parfois 4 occurences de la même carte, ou même pas un seul, les occurence conseils?
Thomas:
Je vais résumer les commentaires sur votre question un peu et donner un bref exemple de la façon dont vous souhaitez construire la plate-forme sans nombres aléatoires et à l'utilisation énumérations.
D'abord, nous définissons les énumérations:
enum Color {
RED,
BLACK;
}
enum CardType {
SPADE, //as per Yassin's comments you'll probably want to define the type's color later on
HEART, //you'd then use HEART(Color.RED) etc. - and provide the correct constructor
DIAMOND,
CLUB;
}
Et la Card
classe:
class Card {
private final int value;
private final CardType type;
private final Color color;
//I'll omit the constructor, getters, equals and hashcode for simplicity, they should be straight forward
}
Et la construction de la plate-forme:
List<Card> deck = new ArrayList<>(208); //we're telling the list that we expect 208 elements
//build two cards for each combination and add them to the deck
for( int value = 1; value <= 14; value++ ) {
for( CardType type : CardType.values() ) {
for( Color color : Color.values() ) {
deck.add( new Card( value, type, color ) );
deck.add( new Card( value, type, color ) );
}
}
}
//shuffle the deck
Collections.shuffle( deck );