Как попросить пользовательский ввод чисел в массиве в textbox1 и отобразить в textbox2

У меня есть два текстовых поля, textbox1 будет иметь введенные пользователем числа, если пользовательский ввод чисел больше 4, произойдет исключительная обработка indexoutofrange. Но я получаю сообщение об ошибке:

не может преобразовать из строки [] в строку.

Как я могу решить ошибку и как ввести номера массивов?

int[] answer =int.Parse(textBox3.Text.Split(new Char[] { ',' }));

for (int i = 0; i < 4; i++)
{
    answer[i] = int.Parse(jawapanD17193.Text);
}

2 ответа

Проблема: метод Int.Parse ожидает string в качестве ввода. И string.Split возвращает string [],

Решение: вам нужно отменить конверсию:

int[] answer = textBox3.Text.Split(new Char[] { ',' }).Select(x=> int.Parse(x)).ToArray();

Таким образом, вы будете анализировать каждый элемент в string [] и у вас будет массив int в конце.

Вам не нужно объявлять дополнительный массив символов: new Char[] { ',' }, Если вы прочитаете документацию, вы увидите, что Split занимает

params char[] разделитель

в качестве параметра. Так что передавая это символ за символом, все будет в порядке:

int[] answer = textBox3.Text.Split(',').Select(x=> int.Parse(x)).ToArray();

РЕДАКТИРОВАТЬ:

Иногда пространство может испортить конверсию. Вы можете удалить его, используя Trim()

    int[] answer = textBox3.Text.Split(',').Select(x=> int.Parse(x.Trim())).ToArray();

int.Parse ожидает одного string в качестве входных данных, но вы передаете результаты string.Split к нему, который является string[],

Используйте цикл или LINQ Select передать каждую отдельную строку из массива в int.Parse,

using System.Linq;

int[] answers = textBox3.Text
    .Split(new Char[] { ',' })
    .Select(str => int.Parse(str))
    .ToArray();
Другие вопросы по тегам