比如,有这样一个数组 {1,1,1,2,1,1,2,1,1,1,1,1,2,2,2,0,2,2}输出为:1有3个,2有1个,1有2个,2有1个,1有2个,2有3个,0有1个,2有2个请问怎么做?写出具体代码最好,谢谢!

解决方案 »

  1.   


     static string ComputeNumber(int[] array)
            {
                StringBuilder builder = new StringBuilder();            int lastValue=-1;//记录上一个数
                int lastNum = 0;//记录上一个数出现的次数
                for (int n = 0; n < array.Length; n++)
                {
                    if(n==0)
                    {
                        lastValue = array[n];
                        lastNum = 1;
                         
                    }
                    else if (lastValue != array[n])//不同
                    {
                        builder.AppendFormat("{0}有{1},", lastValue, lastNum);
                        lastValue = array[n];
                        lastNum = 1;
                    }
                    else//相同
                    {
                        lastNum++;
                    }
                }
                if(lastNum!=0)
                {
                    builder.AppendFormat("{0}有{1},",lastValue,lastNum);
                }
                return builder.ToString();
            }
      

  2.   

    void DoSomething(int[] source)
    {
      int cur;
      int per;
      int n=0;
      for(int i=0;i<source.Length;++i)
      {
        cur=source[i];
        per=i==0:source[0]:source[i-1];
        if(cur==per)
        {
          ++n;
        }
        else
        {
          Console.Out.WriteLine(String.Format("{0}有{1}个",per,n));
          n=1;
          per=cur;
        }
        Console.Out.WriteLine(String.Format("{0}有{1}个",cur,n));//输出最后一个
      }
    }
      

  3.   


                int[] array = { 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 0, 2, 2 };
                int current = array[0], count = 0;
                foreach (int i in array)
                {
                    if (i != current)
                    {
                        Console.Write("{0}有{1}个,", current, count);
                        current = i;
                        count = 1;
                    }
                    else
                        count++;
                }
                Console.WriteLine("{0}有{1}个", current, count);
      

  4.   

    兔子,给你改进一下.
           int[] array = { 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 0, 2, 2 };
               List<int> list= array.ToList();
               list.Sort();
               list.ForEach(p => Console.WriteLine(p));
                array=list.ToArray();
            int current = array[0], count = 0;
                foreach (int i in array)
                {
                    if (i != current)
                    {
                        Console.Write("{0}有{1}个,", current, count);
                        current = i;
                        count = 1;
                    }
                    else
                        count++;
                }
                Console.WriteLine("{0}有{1}个", current, count);
      

  5.   

    哦,没看清楼主这样的需求。。班门弄斧了.以为是统计相同元素的个数了,如果是统计相同元素的个数,还可以这样:            int[] array = { 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 0, 2, 2 };
                var result = from a in array
                             group a by a into g
                             select new { g.Key, Num = g.Count() };
                result.ToList().ForEach(p => Console.WriteLine("元素:{0}有{1}个", p.Key, p.Num));