2013-07-23 63 views
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); 

我希望我的程序能夠顯示用戶輸入的所有數字的總和,儘管我解析了所有需要的變量,但它會拋出「不能隱式轉換類型」字符串「到'int'「錯誤。怎麼了?無法將類型字符串隱式轉換爲int

+1

'。 ToString()'在字符串實例('input')上是沒用的。 – ken2k

+0

'int.Parse(sum.ToString());'實際上是一個無操作,最好用'sum'來表示,最好用 – spender

+0

這個代碼還有,爲什麼你要把'sum'轉換爲字符串,以便你可以在同一行上解析它?這沒有任何意義。 – ken2k

回答

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

應該是:

sum = sum + inputParsed ; 

您使用的是原始輸入,而不是解析值。而且你不需要sumParsed,因爲你只需要將總數保持在sum中,並且不需要將int轉換爲字符串,然後將其解析爲整數。

+0

只要你在它,你應該提及'int.Parse(input.ToString());'可以簡單地'int.Parse(input);' – egrunin

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

檢查,如果用戶的輸入是正確的我寧願

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

這僅僅是一個提醒,而不是直接向你的問題的解決方案。 有足夠的答案=)

1

我將完全重寫這個(是你原來的錯誤,因爲你嘗試添加stringint,而不是解析的輸入爲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; 
} 
+0

如果我現在不忙本來可以得到這個:)哦,好吧,遲到比從未。 – Cyral

+0

+1 ...但將'parsedInput'的聲明移到'while循環的主體:)中 –

相關問題