Domanda

  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");
            }
        }

    }
.

Stavo cercando di visualizzare un nuovo mazzo di carte in una casella di testo multilinea (NewDeckTextBox) quando faccio clic sul pulsante GetNewdeck_Click Button.iam avendo errori con la linea NewDeckTextBox.Text ..

L'output dovrebbe essere

 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
.

Grazie

È stato utile?

Soluzione

Questo sarà un po 'meglio

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()
.

Le stringhe sono immutabili in .NET.Il tuo modo di costruirebbe una nuova stringa per ogni carta che hai aggiunto alla casella di testo, quindi fondamentalmente 52 di loro "C2", quindi "C2 c3", quindi ....

Non appena inizi a manipolare una stringa in un loop, Stringbuilder è il modo di andare.

Un altro suggerimento è quello di usare foreach se puoi, il tuo modo se volessi aggiungere un'altra carta ad e.g.Imperatore (inventato da me proprio ora), dovresti cambiare le variabili del loop e i tuoi array.

Happy Learning.

Ambiente.newline è l'estremità della linea per l'ambiente in cui ti trovi, copi automaticamente con LF o CRLF.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top