Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何捕获用户输入C#_C#_Error Handling_User Input - Fatal编程技术网

如何捕获用户输入C#

如何捕获用户输入C#,c#,error-handling,user-input,C#,Error Handling,User Input,我已经自学了几个星期了。这些对我来说都是新鲜事,因为我不熟悉如何编写高效程序的语法和技术 今天我想知道一个好的程序员如何处理用户输入错误。我的意思是,当我要求用户输入他们的名字时 控制台。写下(“请输入您的姓名”) 当用户输入数字时,程序就会出错。 我所做的是使用字符串变量 字符串输入 但它显示所有内容,甚至是一个不是名称的数值 我如何处理这种错误?如何捕获用户输入?我如何允许用户只输入我想要的值 *这是我第一次使用堆栈溢出,谢谢您让我在这里您可以尝试以下方法: class Program {

我已经自学了几个星期了。这些对我来说都是新鲜事,因为我不熟悉如何编写高效程序的语法和技术

今天我想知道一个好的程序员如何处理用户输入错误。我的意思是,当我要求用户输入他们的名字时

控制台。写下(“请输入您的姓名”)

当用户输入数字时,程序就会出错。 我所做的是使用字符串变量

字符串输入

但它显示所有内容,甚至是一个不是名称的数值

我如何处理这种错误?如何捕获用户输入?我如何允许用户只输入我想要的值

*这是我第一次使用堆栈溢出,谢谢您让我在这里

您可以尝试以下方法:

class Program
{

  static void Main()
  {
    string strName;
    do
    {
      Console.WriteLine("What is your name, please?");
      strName = Console.ReadLine();
      foreach ( char c in strName )
        if ( !char.IsLetter(c) )
        {
          Console.WriteLine();
          Console.WriteLine("Your name can only contains letters.");
          Console.WriteLine();
          strName = null;
          break;
        }
    }
    while ( strName == null );
    Console.WriteLine();
    Console.WriteLine("Your name is: " + strName);
    Console.WriteLine();
    Console.WriteLine("Press a key to exit.");
    Console.ReadKey();
  }

}
如果名称可以有空格或任何类似“-”的键,则测试条件如下:

if ( !char.IsLetter(c) && c!= ' ')
高级解决方案是使用while ReadKey()并捕获所有键来编辑和拒绝非字母的字符,因此用户只能使用字母键。它需要管理诸如箭头、del、退格、home、end、enter、escape等键。。。并根据所需的用户体验重新发送到控制台。

您可以尝试以下方法:

class Program
{

  static void Main()
  {
    string strName;
    do
    {
      Console.WriteLine("What is your name, please?");
      strName = Console.ReadLine();
      foreach ( char c in strName )
        if ( !char.IsLetter(c) )
        {
          Console.WriteLine();
          Console.WriteLine("Your name can only contains letters.");
          Console.WriteLine();
          strName = null;
          break;
        }
    }
    while ( strName == null );
    Console.WriteLine();
    Console.WriteLine("Your name is: " + strName);
    Console.WriteLine();
    Console.WriteLine("Press a key to exit.");
    Console.ReadKey();
  }

}
如果名称可以有空格或任何类似“-”的键,则测试条件如下:

if ( !char.IsLetter(c) && c!= ' ')

高级解决方案是使用while ReadKey()并捕获所有键来编辑和拒绝非字母的字符,因此用户只能使用字母键。它需要管理诸如箭头、del、退格、home、end、enter、escape等键。。。并根据所需的用户体验重新发送到控制台。

您需要的短语是
输入验证。谷歌报告仅此一项就有137000篇帖子。良好的系统设计不接受错误的输入。它会通知用户输入无效,或者在某些情况下警告用户是否真的想使用输入。了解如何在Google上验证输入数据。我在谷歌上找到了这个短语,你想要的是
输入验证
。谷歌报告仅此一项就有137000篇帖子。良好的系统设计不接受错误的输入。它会通知用户输入无效,或者在某些情况下警告用户是否真的想使用输入。了解如何在Google上验证输入数据。我在谷歌上找到了这个谢谢!我试着用你提供的这个方法来做一个游戏。谢谢!我试着用你提供的这个方法来玩玩我的游戏。