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; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |