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

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’”错误。 怎么了?

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

应该:

 sum = sum + inputParsed ; 

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

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

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

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

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

我会完全重写这个(你的原始错误是因为你试图将一个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; }