无法将类型字符串隐式转换为int

时间:2013-07-23 17:15:26

标签: c# parsing

    Console.WriteLine ("Please enter some numbers");
        int sum = 0;
        for(;;)
        {
            string input = Console.ReadLine ();
            if (string.IsNullOrEmpty (input))
            {
                break;
            }
            int inputParsed = int.Parse (input.ToString ());
            int sumParsed = int.Parse (sum.ToString ());
            sum = sum + input; // throws an error here

            Console.WriteLine (sum);

我希望我的程序显示用户输入的所有数字的总和,即使我已经解析了所需的所有变量,它也会抛出“无法隐式转换类型'字符串'到'int'”错误。怎么了?

4 个答案:

答案 0 :(得分:7)

sum = sum + input; //throws an error here

应该是:

sum = sum + inputParsed ;

您正在使用原始输入而不是已解析的值。并且您不需要sumParsed,因为您只需将总和保留在sum中,并且您不需要将int转换为字符串,然后将其解析回整数。

答案 1 :(得分:4)

检查用户的输入是否正确我希望

int userInput = 0;
if( int.TryParse( input, out userInput ) == false )
{
     break;
}

这只是一个建议,而不是直接解决您的问题。 有足够的答案=)

答案 2 :(得分:2)

int inputParsed = int.Parse (input.ToString ());
            //int sumParsed = int.Parse (sum.ToString ());//no need
            sum = sum + inputParsed ; 

答案 3 :(得分:1)

我会完全重写这个(你原来的错误是因为你试图将string添加到int,而不是将解析后的输入添加为int

Console.WriteLine ("Please enter some numbers");
int sum = 0;

while (true)
{
    int parsedInput = 0;
    string input = Console.ReadLine();
    if (!string.IsNullOrEmpty(input) && int.TryParse(input, out parsedInput))
    {
        sum += parsedInput;
        Console.WriteLine (sum);
    }
    else
    break;
}