Как попросить пользовательский ввод чисел в массиве в 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();