基本上,我试图不让用户输入字符串而不是整数。但在代码行上:
else if (Convert.ToString(result) == "")
我得到一个错误。
完整代码:
class Program
{
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.Red;
int calcKelvin = 273;
int calcFahren = 32;
int result = Convert.ToInt32(Console.ReadLine());
if (result == 0)
{
Console.WriteLine("Check it up on google!");
Console.Title = "I'M USELESS CONSOLE, YOU CAN NOW EXIT || I'M USELESS CONSOLE, YOU CAN NOW EXIT || I'M USELESS CONSOLE, YOU CAN NOW EXIT ||";
}
else if (Convert.ToString(result) == "")
{
Console.Write("Error, you can not convert a text");
}
else
{
Console.WriteLine("Kelvin = " + calcKelvin * result);
Console.WriteLine("Fahrenheit = " + calcFahren * result);
}
}
}
答案 0 :(得分:1)
从字符串中获取数字的最安全方法是使用let numbers: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let filteredNumbers = numbers.filter { ($0 % 2) == 0 }
print(filteredNumbers)
/* RESULT: [2, 4, 6, 8, 10] */
方法,因为该方法返回两个值!实际的返回类型是TryParse
,它指示字符串是否已成功转换,另一个是bool
参数,它是我们要转换为的类型,并且已被设置转换后的值(如果转换失败,则设置为该类型的默认值)。
对于温度,我们经常处理十进制数字,因此out
可能是存储结果的一种好方法。因此,我们将使用double
。
现在,由于我们不一定要在用户犯错时退出,所以我们可能应该循环执行转换,因此,如果转换失败,我们只要求用户重试即可。而且由于此代码也将在其他地方使用,因此我们可以创建一个辅助方法,该方法接受显示给用户的提示,并返回强类型的用户响应:
double.TryParse
使用此方法,我们现在可以声明一个double并将其分配给上述方法的返回值,例如:
private static double GetDoubleFromUser(string prompt = null)
{
double result;
do
{
Console.Write(prompt);
} while (!double.TryParse(Console.ReadLine(), out result));
return result;
}
我们可以在代码中纠正的另一件事是用于进行转换的公式。在线快速检查显示,我们为开尔文添加了一个数字,并为华氏度进行了乘法,除法和加法。一旦获得用户的摄氏温度,我们就可以即时计算这些值:
double userInput = GetDoubleFromUser("Enter a temperature: ");
输出
答案 1 :(得分:0)
Convert.ToInt32
会引发异常。要解决此问题,您可以改用int.TryParse
。
示例:
using System;
class Program
{
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.Red;
int calcKelvin = 273;
int calcFahren = 32;
int result;
bool isNum=int.TryParse(Console.ReadLine(),out result);
if (!isNum)
{
Console.Write("Error, you can not convert a text");
}
else if (result == 0)
{
Console.WriteLine("Check it up on google!");
Console.Title = "I'M USELESS CONSOLE, YOU CAN NOW EXIT || I'M USELESS CONSOLE, YOU CAN NOW EXIT || I'M USELESS CONSOLE, YOU CAN NOW EXIT ||";
}
else {
Console.WriteLine("Kelvin = " + calcKelvin * result);
Console.WriteLine("Fahrenheit = " + calcFahren * result);
}
}
}