Pregunta

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

    }

Estaba tratando de mostrar una nueva cubierta de cartas en un cuadro de texto Multiline (NewDeckTextBox) cuando hago clic en el botón GetNewDeck_Click Button.am Tener error con la línea NewDeckTextBox.text ..

La salida debe 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

gracias

¿Fue útil?

Solución

Esto será un poco mejor

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

cadenas son inmutables en .NET.El camino construiría una nueva cadena para cada tarjeta que agregó al cuadro de texto, así que básicamente 52 de ellos "C2" luego "C2 C3" entonces ...

Tan pronto como comience a manipular una cadena en un bucle, StringBuilder es el camino a seguir.

Otro consejo es usar foreach si puede, a su manera, si quisiera agregar otra tarjeta, por ejemplo,Emperador (inventado por mí justo ahora), tendría que cambiar las variables de bucle y sus matrices.

Aprendizaje feliz.

Medio ambiente.newline es el extremo de línea para el ambiente en el que se encuentra, se enrolla automáticamente con LF o CRLF.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top