Question

  private void GetNewDeck_Click(object sender, EventArgs e)
    {
       string[] suit = { "C", "D", "H", "S" };
        string[] num = { "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K", "A" };
        for (int j = 0; j < 4; j++)
        {
            for (int i = 0; i < 13; i++)
            {
               NewDecktextBox.Text + = (suit[j] , num[i]"\n");
            }
        }

    }

J'essayais d'afficher un nouveau jeu de cartes dans une zone de texte multiligne (NewdeckTextBox) lorsque je clique sur le bouton GetNewDeck_Click Bouton.iam Avoir une erreur avec la ligne NewdeckTextBox.text.

La sortie doit être

 C2 C3 C4 C5 C6 C7 C8 C9 C10 CJ CQ CK CA
 D2 D3 D4 D5 D6 D7 D8 D9 D10 DJ DQ DK DA
 H2 H3 H4 H5 H6 H7 H8 H9 H10 HJ HQ HK HA
 S2 S3 S4 S5 S6 S7 S8 S9 S10 SJ SQ SK SA

merci

Était-ce utile?

La solution

Ce sera un peu mieux

StringBuilder sb = new StringBuilder();
foreach (String suit in new string[] { "C", "D", "H", "S" })
{
  foreach (string value in new String[] { "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K", "A" } )
  {
    sb.Append(suit);
    sb.Append(value);
    sb.Append(" ");
  }
  sb.Append(Environment.NewLine);
}
NewDecktextBox.Text = sb.ToString()

Les chaînes sont immuables dans .NET.Vous construirez une nouvelle chaîne pour chaque carte que vous avez ajoutée à la zone de texte, donc essentiellement 52 d'entre eux "C2", puis "C2 C3" alors ...

Dès que vous commencez à manipuler une chaîne dans une boucle, StringBuilder est la voie à suivre.

Un autre conseil consiste à utiliser pour utiliser si vous le pouvez, votre chemin si vous souhaitez ajouter une autre carte par carte.Empereur (inventé par moi juste maintenant), vous devriez changer les variables de boucle et vos tableaux.

Heureux apprentissage.

Environnement.NewLine est l'extrémité de ligne de l'environnement que vous êtes en train de s'échapper automatiquement avec LF ou CRLF.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top