从控制台读取一行中的数字,用空格分隔

tab*_*ula 11 c# numbers console-input

我有一个任务是在一行中读取给定的数字,用控制台的空格分隔.

当我在一个单独的行上读取每个数字时我知道怎么做(Console.ReadLine()但是当数字在同一行时我需要帮助.

Tim*_*ter 19

你可以用String.Split.您可以提供要用于将字符串拆分为多个字符的字符.如果你没有提供所有的空格都被假定为分裂字符(所以新行,制表符等):

string[] tokens = line.Split(); // all spaces, tab- and newline characters are used
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想使用空格作为分隔符:

string[] tokens = line.Split(' ');
Run Code Online (Sandbox Code Playgroud)

如果要解析它们,int可以使用Array.ConvertAll():

int[] numbers = Array.ConvertAll(tokens, int.Parse); // fails if the format is invalid
Run Code Online (Sandbox Code Playgroud)

如果要检查格式是否有效使用int.TryParse.

  • 如果用户输入一个值,然后是_两个空格_,然后是第二个值,会发生什么?ConvertAll 方法是否会正确忽略 _empty_ 数组元素?您可能希望使用采用 `StringSplitOptions` 枚举的重载并使用 `StringSplitOptions.RemoveEmptyEntries`。 (2认同)

Chr*_*Fin 8

您可以使用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
    }
}
Run Code Online (Sandbox Code Playgroud)


Dmi*_*nko 6

您可以使用的LINQ读取行再拆,最后每个项目转换为整数:

  int[] numbers = Console
        .ReadLine()
        .Split(new Char[] {' '}, StringSplitOptions.RemoveEmptyEntries)
        .Select(item => int.Parse(item))
        .ToArray();
Run Code Online (Sandbox Code Playgroud)