在拆分字符串并解析为int之后汇总数字

时间:2016-04-18 16:29:17

标签: c# parsing split

我正在学习c#,并且在尝试从控制台输入中对数字求和时遇到问题。用户插入用逗号分隔的数字。然后,它们被分割,最后它们应该被解析为int以便将来计算为sum。 这就是我所拥有的:

  int[] convertedLine;
        string stringLine = System.Console.ReadLine();
        string[] splittedLine = stringLine.Split(' ');
        var success = int.TryParse(splittedLine[0], out convertedLine);

        System.Console.WriteLine(convertedLine[0] + convertedLine[1] + convertedLine[2]);
        System.Console.ReadKey();

在第4行,我在convertedLine下遇到错误,表示'无法从int []转换为int'。

我将非常感谢能帮助我解决问题的正确方法。 谢谢。 P

----------编辑------------

好的,所以我现在已经有了这个代码并且它有效。有没有更好的方法来解析字符串的所有分割元素?

 int[] convertedLine=new int[3];
        string stringLine = System.Console.ReadLine();
        string[] splittedLine = stringLine.Split(' ');
        var success1 = int.TryParse(splittedLine[0], out convertedLine[0]);
        var success2 = int.TryParse(splittedLine[1], out convertedLine[1]);
        var success3 = int.TryParse(splittedLine[2], out convertedLine[2]);
        System.Console.WriteLine(convertedLine[0] + convertedLine[1] + convertedLine[2]);
        System.Console.ReadKey();

4 个答案:

答案 0 :(得分:1)

您需要初始化convertedLine数组的元素,然后指定要设置为传递给int.TryParse的值的元素

您的.TryParse应该是这样的:

var success = int.TryParse(splittedLine[0], out convertedLine[0]);

注意convertLine旁边的[0]表示您正在设置的int数组中的元素

要初始化convertedLine整数数组,只需执行以下操作:

int[] convertedLine = new int[x];

其中x是您希望在数组中拥有的元素数。如果您不想将用户限制为设定数量的输入,则必须在拆分字符上拆分,然后将整数数组初始化为您发现用户输入的多个值

答案 1 :(得分:0)

问题在于:int[] convertedLine;然后在这里:var success = int.TryParse(splittedLine[0], out convertedLine);

您正在尝试将整数数组解析为唯一的整数值。您的代码假设您有多个整数作为输入

答案 2 :(得分:0)

你正在尝试将字符串转换为int,在你传递一个int数组的情况下,函数尝试将int作为参数。

试试这个:

foreach(var i in splittedLine)
{
   var success = int.TryParse(splittedLine[i], out convertedLine[i]);
}

答案 3 :(得分:0)

' out' int.TryParse中的参数是单个int。但是,您尝试将该单个int放入一个int(您已经称之为“convertedLine'”的数组中,而不指定 where in int应该去的数组。

然后一个选项是声明具有固定大小的int数组(例如)

int[5] convertedLine = new int[5];

然后允许最多5个整数。然后你在哪里

var success = int.TryParse(splittedLine[0], out convertedLine);

您应该在数组中设置一个固定值,如下所示:

int.TryParse(splittedLine[0], out convertedLine[0]);

顺便说一下,你也可能想尝试以同样的方式解析任何其他的int,例如:

int.TryParse(splittedLine[1], out convertedLine[1]);
int.TryParse(splittedLine[2], out convertedLine[2]);