0

现在已经尝试了 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.");
}

}

4

3 回答 3

1

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

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

于 2013-09-30T03:05:02.197 回答
1

“转换”inches = int.Parse(centimetres / 2.54);毫无意义。int.Parse用于将string表示数字的 a 转换为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. 声明inchesdoublenot as int。否则,您将无法获得分数英寸。
  4. 只需将除法的结果分配给inches。这里不需要解析。
于 2013-09-30T03:02:23.163 回答
0

的结果是双精度的,在int.Parsecentimetres / 2.54中也没有重载接受双精度作为参数

于 2013-09-30T03:04:33.197 回答