您的位置:首页 > 编程语言 > Java开发

计算数组中各类型的数有几种,分别是什么

2016-08-24 08:56 344 查看
如题,对于一个数组 int [] arr={10,12,12,2,2};,含有10 12 2 三种数,每种数的个数分别为1,2,2

输出的结果为10 出现过1次  12出现过两次 2出现过两次

想法:利用键值对存储,键是数组中不重复的值

          值是那些数字出现的次数

遍历这个数组,对数组的每一个数都判断这个数字之前出现过没有。若没出现过,加入键数组,并且值加1.若出现过,遍历键数组

判断在哪出现过,并且将其值加1

public class Count{

 public static void main(String [] args)

 {

           int [] arr={10,12,12,2,2};

           int count=0; //记录出现的类型总数

           int[] jian=new int [arr.length];

           int[] zhi=new int[arr.length];

         int i=0;int j=0; //记录键值的递增

        for(int a=0;a<arr.length;a++)

       {

              if(b(arr,arr[a],a))   //判断从0-a是否出现过,没出现过加入键值对

             {

                    count++;

                   jian[i++]=arr[a];

                   zhi[j++]++;

             }

              else  //出现过判断是哪一个键值对

            {

                   int temp=nayi(jian,arr[a]);

                  if(temp==-1)

                  {   

                           System.out.println("出错啦"+arr[a]+"%%"+a);

                  }

                 else

                       zhi[temp]++;

           }

     }

      System.out.println("出现过"+count+"种类型,分别是");

     for(int u=0;u<=i-1;u++) //-1因为i有自增操作比长度大一

    {

           System.out.println(jian[u]+"出现过"+zhi[u]+"次");

      }

 }

 public static  boolean b(int arr[],int n,int m){ //判断以前n出现过没有  m下标

            for(int a=0;a<m;a++)

           {

                    if(n==arr[a])

                         return false;

           }

           return true;

 }

 public static int nayi(int jian[],int n)//判断出现过的n在哪个键值对出现

 {

             for(int a=0;a<jian.length;a++)

             {

                  if(n==jian[a])

                       return a;

            }

            return -1;

  }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java for循环 应用
相关文章推荐