C# 验证用户输入和类型

C# 验证用户输入和类型,c#,validation,C#,Validation,我在C#中设计了一个输入验证循环,我希望它能够检查正确的输入格式。我不确定,但我认为我设计的循环没有检查输入的类型,只是检查输入的字符。我知道我可以使用try-catch块,但您不应该只在异常情况下使用异常吗?这不是一个例外情况,因为我希望用户输入一个不正确的值 问题: do { Console.Write("Do you wish to enter another complex number?: (Y or N)"); response = char.Parse(Consol

我在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');
我有没有办法重新设计这个循环,以便它也检查有效的输入类型

代码:

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');
嗯:

从标准输入流中读取下一行字符

因此,您的数据将是类型

唯一可以做的其他检查是检查返回的字符串的长度是否为1,这样您就知道输入的格式正确。您实际上不需要使用
char.Parse
,因为字符串的元素类型为
char

在这种情况下,另一个有用的检查

检查空字符串“”(空字符串)并修剪额外的空白空间,如字符串“变为此”

if(String.IsNullOrEmpty(response.Trim()&&response!='Y'&&response!='N'))
{ Console.WriteLine(“您必须回答Y或N!”);}


在大多数情况下,在大多数简单的输入验证情况下,在字符上使用字符串更容易。

我不知道您最初的ASIMENT是什么,但您提供的示例可以通过比较字符串来简化,即:

response = Console.ReadLine(); 
if (response.ToUpper() == "Y") {...}
如果您想查看是否可以将输入转换为所需的类型(例如char),您可以一直这样做(对于每个值类型):


希望这能有所帮助。

您所说的“输入类型”是什么意思?你正在接受小写/大写的Y或N,并拒绝其他所有内容-你认为你还需要做什么?为什么随机投反对票,这是他提出的解决方案的一个有效问题,他正在征求建议。不要在没有解释的情况下否决别人。谢谢!我没想过要检查绳子的长度!