Новая колода карт отображает в текстовом поле

StackOverflow https://stackoverflow.com//questions/24004593

  •  20-12-2019
  •  | 
  •  

Вопрос

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

    }
.

Я пытался отобразить новую колоду карт в многослойном текстовом поле (newdecktextbox), когда я нажимаю кнопку getnewdeck_click.iam.

Выход должен быть

 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
.

Спасибо

Это было полезно?

Решение

Это будет немного лучше

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

Строки неизменяются в .NET.Вам путь построит новую строку для каждой карты, которую вы добавили в текстовое поле, так что в основном 52 из них «C2», то «C2 C3», то ....

Как только вы начнете манипулировать строкой в цикле, StringBuilder - это путь.

Другой совет - использовать Foreach, если вы можете, ваш путь, если вы хотите добавить другую карту E.g.Император (придуманный мной только сейчас), вам придется изменить переменные петли и ваши массивы.

Счастливое обучение.

Exection.neewline - конец линии для среды, в которой вы находитесь, автоматически справляется с LF или CRLF.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top