我正在学习使用 C# 编码,因为我喜欢该语言所提供的功能,并且在我正在做的学习练习中遇到了一个问题。
练习的要点是学习声明变量、使用它们并显示它们。
我的代码有效,如下所示:
//Declare variables
float originalFahrenheit;
float calculatedFahrenheit;
float calculatedCelsius;
//Asks for fahrenheit
Console.Write("Enter temperature in fahrenheit: ");
originalFahrenheit = float.Parse(Console.ReadLine());
//Calculations
calculatedCelsius = ((originalFahrenheit - 32) / 9) * 5;
calculatedFahrenheit = ((calculatedCelsius * 9) / 5) + 32;
//Display calculations
Console.WriteLine(originalFahrenheit + " degrees fahrenheit is " + calculatedCelsius + " degrees celsius");
Console.WriteLine(calculatedCelsius + " degrees celsius is " + calculatedFahrenheit + " degrees fahrenheit");
Console.ReadKey();
当用户输入“70”华氏度时,答案会正确显示。
输入华氏温度:70
70华氏度是21.11111摄氏度
21.11111 摄氏度是 70 华氏度
现在,我尝试使用'casting'只是因为编译了代码但结果不同:
这是代码:
//Asks for fahrenheit
Console.Write("Enter temperature in fahrenheit: ");
originalFahrenheit = (float)Console.Read;
这是我得到的答案:
输入华氏温度:70
55华氏度是12.77778摄氏度
12.77778 摄氏度是 55 华氏度
我想知道为什么会这样。对于这种情况,强制转换是没有好处还是我的语法不好?
请再问一个问题。改变时:
originalFahrenheit = (float)Console.Read
至
originalFahrenheit = (float)Console.Readline()
我得到一个例外。请在下面的图片中看到它:
使用强制转换将 Console.Read 更改为 Console.ReadLine
它基本上告诉我我无法将类型“字符串”转换为“浮点数”。
改变时:
originalFahrenheit = float.Parse(Console.ReadLine());
至
originalFahrenheit = float.Parse(Console.Read());
我得到另一个例外。请看下面:
使用 Parse 将“Console.ReadLine”更改为“Console.Read”
异常告诉我我无法将类型“int”转换为“string”
为什么会发生?'ReadLine' 和 'Read' 如何在代码中发挥作用?