标签:blog io 使用 java ar for div sp cti
要求:
随机生成50个数字(整数),每个数字的范围是[10, 50],统计每个数字出现的次数以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出 来,如果某个数字出现次数为0,则不要打印它。打印时按照数字的升序排列。
版本一:(使用数组实现)
import java.util.Random;
public class HomeWork
{
public static void main(String[] args)
{
int[] count = new int[50];//统计每个数字出现的次数
for(int i=0; i<50; i++)
{
int number = new Random().nextInt(41) + 10;//生成[10,50]之间的随机数
count[number-10]++; //充分利用数组下标提供的信息,利用下标信息得到具体的数字,而数组里面的值代表具体的数字出现的次数,这样,一个数组就搞定了两方面的需求。例如,count[0],count[1]分别代表10和11出现的次数,依次类推...
}
for(int i=0; i<count.length; i++)
{
if(count[i] != 0)
{
System.out.println((i+10)+"出现的次数是:"+count[i]);
}
}
int max = count[0];
for(int i=0; i<count.length; i++)//找到那个最大的次数
{
if(count[i] > max)
{
max = count[i];
}
}
for(int i=0; i<count.length; i++)
{
if(count[i] == max)
{
System.out.println("出现次数最多的数字是:"+(i+10)+",次数是:"+count[i]);
}
}
}
}
/*
在Eclipse中的输出结果是:
12出现的次数是:1
13出现的次数是:3
14出现的次数是:3
15出现的次数是:1
16出现的次数是:3
17出现的次数是:1
20出现的次数是:1
22出现的次数是:4
23出现的次数是:3
24出现的次数是:4
27出现的次数是:1
28出现的次数是:1
29出现的次数是:2
30出现的次数是:2
31出现的次数是:2
32出现的次数是:1
33出现的次数是:1
34出现的次数是:1
37出现的次数是:3
43出现的次数是:2
46出现的次数是:2
48出现的次数是:3
49出现的次数是:1
50出现的次数是:4
出现次数最多的数字是:22,次数是:4
出现次数最多的数字是:24,次数是:4
出现次数最多的数字是:50,次数是:4
*/
版本二:(使用集合实现)
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeMap;
public class HomeWorkStd
{
public static void main(String[] args)
{
Map map = new TreeMap();//存储数字及其出现的次数(key为数字,value数字为出现的次数)尝试HashMap map
Random random = new Random();
for(int i=0; i<50; i++)
{
int number = random.nextInt(41) + 10;
Integer in = new Integer(number);
if(map.get(in) == null)
{
map.put(in, new Integer(1));
}
else
{
int value = ((Integer)map.get(in)).intValue();
map.put(in, new Integer(value + 1));
}
}
Collection col = map.values();
Integer maxOccurs = (Integer)Collections.max(col);//可以自己实现找到最大次数,但是尽量用jdk提供的,因为其效率大部分情况下可能比自己写的要高。
Set set = map.entrySet();
List list = new ArrayList();//存储出现次数最大的数字
for(Iterator iter=set.iterator(); iter.hasNext();)
{
Map.Entry entry = (Map.Entry)iter.next();
Integer key = (Integer)entry.getKey();
Integer value = (Integer)entry.getValue();
if(value.intValue() == maxOccurs.intValue())
{
list.add(key);
}
System.out.println(key + ":" + value);
}
System.out.println("出现最多次数为" + maxOccurs);
System.out.println("这些数字分别是:");
for(Iterator iter=list.iterator(); iter.hasNext();)
{
System.out.println(iter.next());
}
/*另一种方式
//找到最大的次数(自己实现)
Collection coll = map.values();
int max = 0;//假设最大的次数为零
for(Iterator iter = coll.iterator(); iter.hasNext();)
{
Integer value = (Integer)iter.next();
if(value.intValue() > max)
max = value.intValue();
}
//输出出现次数最多的数
Set set = map.keySet();
for(Iterator iter = set.iterator(); iter.hasNext();)
{
Integer key = (Integer)iter.next();
if(((Integer)map.get(key)).intValue() == max)
{
System.out.println("出现次数最多的数有:" + key + ",次数为:" + max);
}
}
*/
}
}
版本三:(简化版,使用集合,利用泛型、自动装箱/拆箱技术)
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeMap;
public class StatisticRandomNumber
{
public static void main(String[] args)
{
TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();
Random random = new Random();
int temp;
for(int i=0; i<50; i++)
{
temp = random.nextInt(41) + 10;
if(map.get(temp) == null)
map.put(temp, 1);
else
map.put(temp, map.get(temp) + 1);
}
Set<Map.Entry<Integer, Integer>> mapSet = map.entrySet();
for(Iterator<Map.Entry<Integer, Integer>> iter=mapSet.iterator(); iter.hasNext();)
{
Map.Entry<Integer, Integer> entry = iter.next();
System.out.println("Key:" + entry.getKey() + ", Value:" + entry.getValue());
}
Collection<Integer> col = map.values();
int maxValue = Collections.max(col);
System.out.println("出现最多次数为:" + maxValue);
System.out.println("这些数字有:");
for(Iterator<Map.Entry<Integer, Integer>> iter=mapSet.iterator(); iter.hasNext();)
{
Map.Entry<Integer, Integer> entry = iter.next();
if(entry.getValue() == maxValue)
{
System.out.println(entry.getKey());
}
}
}
}
标签:blog io 使用 java ar for div sp cti
原文地址:http://www.cnblogs.com/xpjiang/p/3988547.html