【问题标题】:Update C# From HashSet to Try.Parse将 C# 从 HashSet 更新为 Try.Parse
【发布时间】:2016-02-25 14:48:15
【问题描述】:

多亏了我在这里得到的帮助,代码工作得更好了。你们中的一些人建议我应该使用“TryParse”,但我不知道如何在这段代码中正确使用它。你有什么建议吗?

int i = 1;
while (set.Count < 10)
{
Console.Write("|Write number " + i + ": ");
string input = Console.ReadLine();
while (!int.TryParse(input, out number))
{
 if (!set.Add(number)) //
{
Console.Write("Write a new unique number!");
}
else
{
i++;
}

【问题讨论】:

  • 在开始 for 循环之前创建 HashSet。
  • 最好在用户输入中使用int.TryParse

标签: c# hashset tryparse


【解决方案1】:

所以你想添加十个数字,你可以从在循环之外声明 HashSet 开始:

var numbers = new HashSet<int>();

在这种情况下,由于您希望循环继续直到满足某些条件,所以最好使用 while 循环:

int i = 1;
while(numbers.Count < 10) 
{
     Console.Write("|Write number " + i + ": ");
     int number = int.Parse(Console.ReadLine());
     if(!numbers.Add(number))
     {
         Console.WriteLine("The number already exists, try again.");
     }
     else 
     {  
         i++;
     }
}

在循环内部,我们只是尝试将给定的数字添加到HashSet,如果HashSet 上不存在该数字,Add 方法将添加该数字并返回true,否则返回false .

此代码可以满足您的需求,但您可能需要考虑一些改进,例如验证用户输入以确保它是有效数字。您可以使用TryParse 方法来做到这一点。

【讨论】:

    【解决方案2】:

    HashSet<int> 视为一组整数。 您可以添加、删除和搜索整数。

    HashSet<int> foundAlready = new HashSet<int>();
    
    for (int i = 0; i < 10; i++)
    {
        int number = int.Parse(Console.ReadLine());
    
        if (foundAlready.Contains(number))
        {
            // User has entered this number already - do something.
        }
        else
        {
            // First time for this number - do something else.
            foundAlready.Add(number);
        }
    }
    

    【讨论】:

      【解决方案3】:

      如我所见,您在循环中实例化 HashSet 类的对象。因此,您在每个答案之后重新创建一组答案。 这是错的。您应该有 一个 HashSet,您应该在其中添加项目或测试它是否具有特定项目。

      基本上,您的代码应该是:

      HashSet<int> set = new HashSet<int>();
      int number;
      for(int i=0;i<10;i++){
          Console.Write("|Write number " + (i + 1) + ": ");
          number = int.Parse(Console.ReadLine());
          //try add to set
          if (set.Add(number)){
             //set doesn't contain such number, so number has been inserted
          }
          else
          {
            //set contains number
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-29
        • 2022-07-10
        • 2011-10-28
        • 1970-01-01
        相关资源
        最近更新 更多