2
    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);

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

4

4 回答 4

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

应该:

sum = sum + inputParsed ;

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

于 2013-07-23T17:16:33.797 回答
4

检查用户的输入是否正确,我更喜欢

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

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

于 2013-07-23T17:21:21.590 回答
2
int inputParsed = int.Parse (input.ToString ());
            //int sumParsed = int.Parse (sum.ToString ());//no need
            sum = sum + inputParsed ; 
于 2013-07-23T17:18:20.740 回答
1

我会完全重写这个(你原来的错误是因为你试图将 a 添加string到 an int,而不是将解析的输入添加为 an 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;
}
于 2013-07-23T17:24:11.233 回答