验证用户输入和类型

时间:2009-12-05 22:42:31

标签: c# validation

我在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');

3 个答案:

答案 0 :(得分:2)

Console.Readline()

  

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

因此,您的数据类型为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更容易。