我在C#中设计了一个输入验证循环,我希望它能够检查正确的输入格式。我不确定,但我认为我设计的循环不是检查输入的类型,只是输入了什么字符。我知道我可以使用try-catch块,但是你不应该只为异常情况使用异常吗?这不是特殊情况,因为我希望用户输入的值不正确。
问题:
有没有办法我可以重新设计这个循环,以便它也检查有效的输入类型?
代码:
do
{
Console.Write("Do you wish to enter another complex number?: (Y or N)");
response = char.Parse(Console.ReadLine());
response = char.ToUpper(response);
if (response != 'Y' && response != 'N')
Console.WriteLine("You must respond Y or N!");
} while (response != 'Y' && response != 'N');
答案 0 :(得分:2)
从标准输入流中读取下一行字符。
因此,您的数据类型为System.String
。
您可以做的唯一其他检查是检查返回的字符串的长度是否为1,因此您知道输入的格式正确。您并不真正需要char.Parse
,因为字符串的元素属于char
类型。
答案 1 :(得分:1)
我不知道您的原始阴影是什么,但您提供的示例可以通过比较字符串来简化,即:
response = Console.ReadLine();
if (response.ToUpper() == "Y") {...}
如果你想查看输入是否可以强制转换到你需要的类型(例如char),你可以总是这样做(对于每种值类型):
char input;
bool IsValid = char.TryParse(Console.ReadLine().ToUpper(), out input);
if (IsValid)
{
Console.WriteLine("You entered the following char: " + input);
}
希望这有帮助。
答案 2 :(得分:0)
在这种情况下另一个有用的检查
检查空字符串,“”(空字符串)并修剪额外的空格I.E s字符串如此“”成为“”
if(String.IsNullOrEmpty(response.Trim()&& response!='Y'&& response!='N'))
{ Console.WriteLine(“你必须回答Y或N!”); }
在大多数情况下,在大多数简单的输入验证情况下,使用字符串比char更容易。