您的位置:首页 > 其它

随机生成长度为100的数组,数组元素为1到10,统计出现次数最多和最少的元素

2013-04-25 12:35 836 查看
思路很简单,大家一看就懂。

import java.util.*;
class  Max
{
static int a,b,c,d,e,f,g,h,i,j;
public static void main(String[] args)
{
int[] num=new int[100];
Random rd=new Random();
for(int n=0;n<100;n++)
{
num
=rd.nextInt(10)+1;
System.out.println(num
);
if(num
==1)
a++;
else if(num
==2)
b++;
else if(num
==3)
c++;
else if(num
==4)
d++;
else if(num
==5)
e++;
else if(num
==6)
f++;
else if(num
==7)
g++;
else if(num
==8)
h++;
else if(num
==9)
i++;
else if(num
==10)
j++;
}
int[] cn={a,b,c,d,e,f,g,h,i,j};
Arrays.sort(cn);
System.out.println(Arrays.toString(cn));
int max=count(cn[9]);
int min=count(cn[0]);

System.out.println("出现次数最多的是:"+max+",总共出现:"+cn[9]+"次,"+"出现次数最少的是:"+min+",总共出现:"+cn[0]+"次,");

}
static int count(int m)
{
if(m==a)
return 1;
else if(m==b)
return 2;
else if(m==c)
return 3;
else if(m==d)
return 4;
else if(m==e)
return 5;
else if(m==f)
return 6;
else if(m==g)
return 7;
else if(m==h)
return 8;
else if(m==i)
return 9;
else if(m==j)
return 10;
else
return 0;
}
}

还有一种技术含量更高的解决方案,可以解决类似的问题。下面程序中提供了两个遍历方式,供大家参考。思路也很简单,利用了hashmap,将数组元素依次和map里面的初始key比较,如果有相同的,那么value值加1。

import java.util.*;
class Count
{
public void count(int[] arr)
{
int num=0;
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i=1;i<=10;i++)
{
map.put(i,num);
}
for(int i=0;i<arr.length;i++)
{
/*Iterator it = map.entrySet().iterator();
while(it.hasNext())
{
Map.Entry m=(Map.Entry)it.next();
if(arr[i]==(int)m.getKey())
map.put((int)m.getKey(),(int)m.getValue()+1);
}*/
for(Map.Entry<Integer,Integer> m:map.entrySet())
{
if(arr[i]==(int)m.getKey())
map.put((int)m.getKey(),(int)m.getValue()+1);
}
}
for(Map.Entry<Integer,Integer> m:map.entrySet())
{
System.out.println(""+m.getKey()+"出现的次数为:"+m.getValue()+"次");
}
}

public static void main(String[] args)
{
Random rd=new Random();
int[] arr=new int[100];
for(int i=0;i<100;i++)
{
arr[i]=rd.nextInt(10)+1;
}
new Count().count(arr);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐