输入字符串格式不正确|| ConsoleApp

时间:2019-01-14 03:42:43

标签: c# console

基本上,我试图不让用户输入字符串而不是整数。但在代码行上:

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);
        }
    }
}

2 个答案:

答案 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: ");

输出

enter image description here

答案 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);
}
}
}