2013-09-30 53 views
0

現在已經嘗試了4個多小時,我並不是專家,我絕對需要幫助。任何想法出了什麼問題?int.Parse(string)'的最佳重載方法匹配'有一些無效參數。這是什麼意思?

// Declare variables 
    int inches = 0; 
    double centimetres = 0; 
    string input; 

    //Ask for input 
    Console.Write("Enter Number of centimetres to be converted: "); 
    input = Console.ReadLine(); 

    //Convert string to int 
    centimetres = double.Parse(input); 

    inches = int.Parse(input); 

    inches = int.Parse(centimetres/2.54); 

    //Output result 
    Console.WriteLine("Inches = " + inches + "inches."); 
} 

}

回答

1

該 「轉換」 inches = int.Parse(centimetres/2.54);是沒有意義的。 int.Parse用於將表示數字的string轉換爲int。但你通過它double

要使其工作,你的代碼需要看起來像這樣:

//Ask for input 
Console.Write("Enter Number of centimetres to be converted: "); 
double input = Console.ReadLine(); 

//Convert string to int 
double centimetres = double.Parse(input); 

double inches = centimetres/2.54; 

//Output result 
Console.WriteLine("Inches = " + inches + "inches."); 

幾點:

  1. 使用時聲明變量,而不是在一個方法的開始。這是舊的語言的遺留問題,需要首先定義變量。
  2. 完全刪除inches = int.Parse(input);,因爲結果從未被使用,因爲它被覆蓋在下一行。
  3. 聲明inchesdouble而不是int。否則,你將無法擁有分數英寸。
  4. 簡單地將除法結果分配給inches。這裏不需要解析。
0

centimetres/2.54結果是雙,存在也不過載接受兼作參數在int.Parse

0

問題是大多數這樣的線: 英寸= int.Parse(釐米/ 2.54);

int.Parse取一個字符串,釐米/2.54是一個double。將double轉換爲int使用Convert.ToInt32來代替。

+0

-1:使用Convert.ToInt32'不能將'double'轉換爲'string'。 –

+0

在原始代碼中英寸被聲明爲int,這就是爲什麼我建議使用一個函數,它需要一個double並返回一個int。 – thescottknight

+0

你說過「要將double轉換爲**字符串**請使用Convert.ToInt32」。我現在意識到這可能是一個簡單的錯字,所以如果你糾正它,我會刪除我的downvote。 –

相關問題