代码之家  ›  专栏  ›  技术社区  ›  lapartman

C简单控制台应用程序显示/逻辑问题

  •  0
  • lapartman  · 技术社区  · 7 年前
            List<int> numberList = new List<int>();
            List<int> uniqueList = new List<int>();
    
            string input;
            int number = 0;
            bool over = false;
    
            while (!over)
            {
                input = Console.ReadLine();
                if (input == "quit")
                {
                    over = true;
                    break;
                }
                if (int.TryParse(input, out number))
                {
                    numberList.Add(number);
                }
            }
    
            for (int i = 0; i < numberList.Count; i++)
            {
                if (!uniqueList.Contains(number))
                {
                    uniqueList.Add(number);
                }
            }
    
            for (int i = 0; i < uniqueList.Count; i++)
            {
                Console.WriteLine(uniqueList[i]);
            }
    
            Console.ReadKey();
    

    你好!我需要一些帮助这个程序接受数字,但键入“退出”后,它应该列出所有 独特的 已输入的数字。

    例如,输入如下: 5,5,5,2,2,1,3 控制台只能显示 因为他们是唯一 独特的 数字。

    问题是,当前表单中的程序只显示输入的最后一个唯一编号,而不是所有唯一编号,我不知道原因。

    你能告诉我为什么吗?我需要做什么来列出所有的列表?

    4 回复  |  直到 7 年前
        1
  •  3
  •   mjwills Myles McDonnell    7 年前

        Dictionary<int, int> numberDictionary = new Dictionary<int, int>();
    
        string input;
        int number = 0;
        bool over = false;
    
        while (!over)
        {
            input = Console.ReadLine();
            if (input == "quit")
            {
                over = true;
                break;
            }
            if (int.TryParse(input, out number))
            {
                if (numberDictionary.TryGetValue(number), out int count)
                {
                    numberDictionary[number] = count + 1;
                }
                else
                {
                    numberDictionary.Add(number, 1);
                } 
            }
        }
    
        foreach(var item in numberDictionary)
        {
            if (item.Value == 1)
            Console.WriteLine(item.Key);
        }
    
        Console.ReadKey();
    
        2
  •  1
  •   Stuart    7 年前

    List<int> numbers = new List<int>{1, 2, 2, 3, 3, 3, 4, 4, 4, 5, 6, 6, 6};
    var unique = numbers.Where(n => numbers.Count(m => m == n) == 1);
    foreach(var u in unique)
        WriteLine(u);
    

    n

    numbers.Count(m => m == n)

        3
  •  1
  •   Smaiil    7 年前

    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace EntryPoint.Concole
    {
        class Program
        {
            static void Main(string[] args)
            {
               List<int> numberList = new List<int>();
               List<int> uniqueList = new List<int>();
    
               string input;
               int number = 0;
               bool over = false;
    
               while (!over)
               {
                   input = Console.ReadLine();
                   if (input == "quit")
                   {
                      over = true;
                      break;
                   }
                   if (int.TryParse(input, out number))
                   {
                      numberList.Add(number);
                   }
               }
    
               var numbersDistinct = numberList.GroupBy(i => i);
    
               foreach (var num in numbersDistinct)
               {
                  if (num.Count() == 1)
                  {
                      uniqueList.Add(num.Key);
                  }
               }
    
               for (int i = 0; i < uniqueList.Count; i++)
               {
                  Console.WriteLine(uniqueList[i]);
               }
    
               Console.ReadKey();
            }
        }
    
        4
  •  0
  •   Unknown User    7 年前

            List<int> numberList = new List<int>();
            List<int> uniqueList = new List<int>();
    
            string input;
            int number = 0;
            bool over = false;
    
            while (!over)
            {
                input = Console.ReadLine();
                if (input == "quit")
                {
                    over = true;
                    //break; // it is not needed since you have over = true
                }
                if (int.TryParse(input, out number))
                {
                    numberList.Add(number);
                }
            }
    
            for (int i = 0; i < numberList.Count; i++)
            {
                //if (!uniqueList.Contains(number)) // this is the wrong line
                if (numberList.Count(q => q == numberList[i]) == 1)
                {
                    //uniqueList.Add(number); // this is also wrong
                    uniqueList.Add(numberList[i]);
                }
            }
    
            for (int i = 0; i < uniqueList.Count; i++)
            {
                Console.WriteLine(uniqueList[i]);
            }
    
            Console.ReadKey();
    

    推荐文章