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

41 篇文章 10 订阅
28 篇文章 0 订阅

思路很简单,大家一看就懂。

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[n]=rd.nextInt(10)+1;
			System.out.println(num[n]);
			if(num[n]==1)
				a++;
			else if(num[n]==2)
				b++;
			else if(num[n]==3)
				c++;
			else if(num[n]==4)
				d++;
			else if(num[n]==5)
				e++;
			else if(num[n]==6)
				f++;
			else if(num[n]==7)
				g++;
			else if(num[n]==8)
				h++;
			else if(num[n]==9)
				i++;
			else if(num[n]==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);
	}
}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值