加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#中的Float / Double类型输入验证

发布时间:2020-12-15 23:48:07 所属栏目:百科 来源:网络整理
导读:这实际上是我写的第一个程序(上周一开始学习);我是个新手. 我的问题是,当程序提示用户输入fahreinheit或celsius条目(期待一个数字)时,如何防止用户输入无效字符时抛出异常?因此,例如,当用户输入“asfasd”时,程序会抛出异常. 在发布之前我在网站上做了很多
这实际上是我写的第一个程序(上周一开始学习);我是个新手.

我的问题是,当程序提示用户输入fahreinheit或celsius条目(期待一个数字)时,如何防止用户输入无效字符时抛出异常?因此,例如,当用户输入“asfasd”时,程序会抛出异常.

在发布之前我在网站上做了很多搜索,我成功地找到了其他输入验证问题,然而,他们都是关于C和C的,因为我是一个新手,我很难理解那些语言以及它们与C#的关系.谢谢.请看代码:

using System;


namespace Converter
{
class Program
{
    static void Main()
    {
        float? FahrenheitInput = null;
        double? CelsiusInput = null;
        float? KilogramInput = null;
        float? PoundsInput = null;
        int UserChoice = 0;
        do
        {

            Console.WriteLine("What would you like to convert? Enter the corresponding number.n1. Fahrenheit to Celsius");
            Console.WriteLine("2. Celsius to Fahrenheitn3. Pounds to Kilogramsn4. Kilograms to poundsn5. Exit program");
            UserChoice = int.Parse(Console.ReadLine());
            switch (UserChoice)
            {
                case 1:
                    Console.WriteLine("Enter the temperature in Fahreinheit,number only:");
                    FahrenheitInput = float.Parse(Console.ReadLine());
                    Console.Clear();
                    Console.WriteLine(FahrenheitInput + " degrees fahrenheit in Celsius is " + Program.FahrenheitToCelsius(FahrenheitInput) + "nn");
                    break;
                case 2:
                    Console.WriteLine("Enter the temperature in Celsius,number only:");
                    CelsiusInput = double.Parse(Console.ReadLine());
                    Console.Clear();
                    Console.WriteLine(CelsiusInput + " degrees Celius in fahrenheit is " + Program.CelsiusToFahrenheit(CelsiusInput) + "nn");
                    break;
                case 5:
                    break;
                default:
                    Console.WriteLine("This is not a valid entry. Please enter 1,2,3,4,or 5.");
                    break;

            }
        } while (UserChoice != 5);


    }
    public static float? FahrenheitToCelsius(float? INPUT)
    {
        return (INPUT - 32) * 5 / 9;
    }
    public static double? CelsiusToFahrenheit(double? INPUT)
    {
        return INPUT * 1.8 + 32;
    }
}

}

解决方法

您可以将其放在Try-Catch块中,也可以使用while循环来验证用户输入.

下面是带有while循环的代码,用于验证用户输入.

class Program
{
    static void Main(string[] args)
    {
        double FahrenheitInput = 0;
        double CelsiusInput = 0;
        double KilogramInput = 0;
        double PoundsInput = 0;
        int UserChoice = 0;
        do
        {

            Console.WriteLine("What would you like to convert? Enter the corresponding number.n1. Fahrenheit to Celsius");
            Console.WriteLine("2. Celsius to Fahrenheitn3. Pounds to Kilogramsn4. Kilograms to poundsn5. Exit program");
            UserChoice = int.Parse(Console.ReadLine());
            switch (UserChoice)
            {
                case 1:
                    Console.WriteLine("Enter the temperature in Fahreinheit,number only:");
                    while (!double.TryParse(Console.ReadLine(),out FahrenheitInput))
                    {
                        Console.WriteLine("Invalid format,please input again!");
                    };
                    Console.Clear();
                    Console.WriteLine(FahrenheitInput + " degrees fahrenheit in Celsius is " + Program.FahrenheitToCelsius(FahrenheitInput) + "nn");
                    break;
                case 2:
                    Console.WriteLine("Enter the temperature in Celsius,out CelsiusInput))
                    {
                        Console.WriteLine("Invalid format,please input again!");
                    };
                    Console.Clear();
                    Console.WriteLine(CelsiusInput + " degrees Celius in fahrenheit is " + Program.CelsiusToFahrenheit(CelsiusInput) + "nn");
                    break;
                case 5:
                    break;
                default:
                    Console.WriteLine("This is not a valid entry. Please enter 1,or 5.");
                    break;

            }
        } while (UserChoice != 5);

    }
    public static double FahrenheitToCelsius(double INPUT)
    {
        return (INPUT - 32) * 5 / 9;
    }
    public static double CelsiusToFahrenheit(double INPUT)
    {
        return INPUT * 1.8 + 32;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读