Чтение номеров с консоли, заданных в одной строке, разделенных пробелом
У меня есть задача прочитать n заданных чисел в одной строке, разделенной пробелом с консоли.
Я знаю, как это сделать, когда я читаю каждое число в отдельной строке (Console.ReadLine()
), но мне нужна помощь в том, как это сделать, когда числа находятся в одной строке.
Ответы
Ответ 1
Вы можете использовать String.Split
. Вы можете указать символ (ы), который вы хотите использовать, чтобы разделить строку на несколько. Если вы не указали ни одного, белые пробелы считаются разделенными символами (так что новая строка, табуляция и т.д.):
string[] tokens = line.Split(); // all spaces, tab- and newline characters are used
или, если вы хотите использовать только пробелы в качестве разделителя:
string[] tokens = line.Split(' ');
Если вы хотите проанализировать их на int
, вы можете использовать Array.ConvertAll()
:
int[] numbers = Array.ConvertAll(tokens, int.Parse); // fails if the format is invalid
Если вы хотите проверить, является ли формат действительным, используйте int.TryParse
.
Ответ 2
Вы можете разделить строку, используя String.Split()
:
var line = Console.ReadLine();
var numbers = line.Split(' ');
foreach(var number in numbers)
{
int num;
if (Int32.TryParse(number, out num))
{
// num is your number as integer
}
}
Ответ 3
Вы можете использовать Linq для чтения строки, затем разделить и, наконец, преобразовать каждый элемент в целые числа:
int[] numbers = Console
.ReadLine()
.Split(new Char[] {' '}, StringSplitOptions.RemoveEmptyEntries)
.Select(item => int.Parse(item))
.ToArray();
Ответ 4
Вам просто нужно разбить введенные данные.
string numbersLine = console.ReadLine();
string[] numbers = numbersLine.Split(new char[] { ' '});
// Convert to int or whatever and use
Ответ 5
Это поможет вам удалить лишние пробелы, присутствующие в конце или начале входной строки.
string daat1String = Console.ReadLine();
daat1String = daat1String.TrimEnd().TrimStart();
string[] data1 = daat1String.Split(null);
int[] data1Int = Array.ConvertAll(data1, int.Parse);
Ответ 6
ты можешь сделать
int[] Numbers = Array.ConvertAll(Console.ReadLine().Split(' '),(item) => Convert.ToInt32(item));
Приведенная выше строка помогает нам получить отдельные целые числа в строке, разделенные одним пробелом. Два или более пробелов между числами приведут к ошибке.
int[] Numbers = Array.ConvertAll(Console.ReadLine().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries), (item) => Convert.ToInt32(item));
этот вариант исправит ошибку и будет работать хорошо, даже если два или более пробелов между числами в строке