Pergunta

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

    }

Eu estava tentando exibir um novo baralho de cartas em uma caixa de texto multilinha (NewDecktextBox) quando clico no botão GetNewDeck_Click. Estou tendo erro com a linha NewDecktextbox.Text.

A saída deve ser

 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

Obrigado

Foi útil?

Solução

Isso será um pouco melhor

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

Strings são imutáveis ​​em .net.Você criaria uma nova string para cada cartão adicionado à caixa de texto, então basicamente 52 deles "C2" e depois "C2 C3" e então ....

Assim que você começar a manipular uma string em um loop, StringBuilder é o caminho a seguir.

Outra dica é usar foreach se puder, do seu jeito se quiser adicionar outro cartão, por exemplo.Emperor (inventado por mim agora há pouco), você teria que alterar as variáveis ​​de loop e seus arrays.

Feliz aprendizado.

Environment.NewLine é o fim da linha do ambiente em que você está, lida automaticamente com LF ou CRLF.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top