Чтение номеров с консоли, заданных в одной строке, разделенных пробелом

У меня есть задача прочитать 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));

этот вариант исправит ошибку и будет работать хорошо, даже если два или более пробелов между числами в строке