我正在学习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();
答案 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]);