【问题标题】:Checking if the user inputs the same string twice using array检查用户是否使用数组两次输入相同的字符串
【发布时间】:2014-10-13 21:23:42
【问题描述】:

我想检查用户是否使用数组两次输入了相同的字符串。不知道要使用什么代码,您能提出什么建议吗?

如果用户输入“1A”两次,我想打印“Already Taken”,如果用户输入的字符串不在我的 Array(arr) 中,我想打印“invalid input”

这是我的数组

      string[,] arr = new string[,]
        {
            {"1A","2A","3A","4A","5A"},
            {"1B","2B","3B","4B","5B"},
            {"1C","2C","3C","4C","5C"},
            {"1D","2D","3D","4D","5D"},
        };

【问题讨论】:

  • linq 将是一个好的开始
  • 您必须提供一些示例输入/输出,问题不是很清楚
  • @DorCohen 这听起来不像是一个 LINQ 问题;我真的不知道 OP 想要做什么,但我仍然非常有信心 LINQ 不是第一个使用的工具
  • @Josh 你没有给我们任何关于数组如何与用户输入相关的上下文......这里的问题是“用户必须选择数组中的两个不同值”? .还是“数组代表用户的输入;值必须不同”?
  • @MarcGravell 看看我的回答,我想这就是他的意思

标签: c# arrays


【解决方案1】:

您可以使用HashSet<string> 来检查是否有重复项:

var set = new HashSet<string>();
bool noDuplicate = arr.Cast<string>().All(set.Add);

【讨论】:

  • 非常整洁的实现
【解决方案2】:

您可以使用Set,例如HashSet&lt;String&gt;:

  HashSet<String> hs = new HashSet<string>();

  foreach(var item in arr)
    if (!hs.Add(item)) {
      // User used "item" at least twice
      break; 
    }

【讨论】:

  • 顺便说一句;您可以简化为 if(!hs.Add(item)) { /* fail */ } - 这样可以避免对每个项目进行单独的 Contains/Add 测试。
【解决方案3】:

您可以尝试使用 LINQ,如下所示:

var query = arr.GroupBy(x=>x)
              .Where(g=>g.Count()>1)
              .ToList();

【讨论】:

    【解决方案4】:

    你可以试试:

      HashSet<String> hash = new HashSet<string>();
    
      string input = "TEST";
      bool found = false;
    
      foreach(string item in arr)
      {
          if (item.Equals(input))
          {
              if (hash.Contains(item))
              {
                  Console.WriteLine("Already Taken");
              }
              else
              {
                  hash.Add(item);
              }
              found = true;
              break;
          }
       }
    
      if (!found)
      {
          Console.WriteLine("Invalid Input");
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 2015-05-23
      • 2020-07-12
      • 2022-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多