Je suis un débutant en Java et j'essaie de faire fonctionner un blackjack sur console. J'ai créé une ArrayList avec des cartes sous forme de chaînes, telles que "3 Spades". Maintenant, je dois vérifier les valeurs pour ne pas obtenir plus de 21 par exemple. J'ai essayé de donner toutes les cordes, mais cela ne fonctionne pas pour moi. Existe-t-il un moyen de filtrer uniquement les nombres hors de la chaîne et de les enregistrer en tant qu'int? Merci de votre aide.

public ArrayList<String> Karten () {
    ArrayList<String>Herz = new ArrayList<String>(
            Arrays.asList(" 2 Herz "," 3 Herz "," 4 Herz "," 5 Herz "," 6 Herz "," 7 Herz "," 8 Herz "," 9 Herz "," 10 Herz ", " Bube Herz ", " Dame Herz ", " König Herz ", " Ass Herz "));
1
snakezz 26 août 2020 à 15:39

2 réponses

Meilleure réponse

Vous pouvez également créer un nouveau type de carte avec un champ de valeur numérique:

public class Card {
    private int value;
    private String valueLabel;
    private String shape;
    public Card(int value, String valueLabel, String shape) {
        this.value=value;
        this.valueLabel=valueLabel;
        this.shape=shape;
    }
    public int getValue() {
        return value;
    }

    public String toString() {
        return valueLabel+" "+shape;
    }
}

Cela résout également votre problème pour "Bube Herz", "Dame Herz", "König Herz", "Ass Herz" qui n'ont pas de numéro.

Vous pouvez maintenant créer votre main sous forme de liste d'instances de cartes:

ArrayList<Card> cards=new ArrayList<>(Arrays.<Card>asList(new Card(1,"Ass","Herz"), new Card(2,"2","Herz")));
int totalValue=cards.stream().mapToInt(c->c.getValue()).sum();
System.out.println("Your hand:"+cards);
System.out.println("has a total value of:"+totalValue);

Production:

Your hand:[Ass Herz, 2 Herz]
has a total value of:3
2
Conffusion 27 août 2020 à 08:48

Lorsque vous recevez une carte, essayez ce qui suit:

String card = "3 Spades"
String[] cardSplit = str.split(" ");
int cardValue = Integer.parseInt(cardSplit[0]);
String cardType = cardSplit[1];
 

Vous pouvez maintenant utiliser cardValue comme entier et l'ajouter à un total. Vous pouvez également faire référence à cardType si vous avez besoin du type de carte, mais en supposant que ce soit Black Jack, je ne pense pas que cela compte beaucoup.

Faites-moi savoir si cela aide.

2
lime 26 août 2020 à 12:59