int.Parse(string)'的最佳重载方法匹配有一些无效的参数。这是什么意思?

时间:2013-09-30 02:58:46

标签: c# parsing methods arguments converter

现在已经尝试了4个多小时,我一点也不专家,我肯定需要帮助。什么出了什么问题?

    // 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.");
}

}

3 个答案:

答案 0 :(得分: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. inches声明为double而不是int。否则你将无法获得分数英寸。
  4. 只需将分部结果分配给inches即可。这里不需要解析。

答案 1 :(得分:0)

centimetres / 2.54的结果是双倍的,int.Parse

中有参数和重载接受双参数

答案 2 :(得分:0)

问题最像这一行: inches = int.Parse(厘米/2.54);

int.Parse采用字符串,厘米/ 2.54是双精度。要将double转换为int,请改用Convert.ToInt32。