十四周课堂练习-找水王
设计思维:
先将数组中的重复的数值(发言账号)去掉只留一个
存储起来,和原数组进行比较
有相同的就加一
最后判断是否大于总数的50%然后输出
源代码:
1 import java.util.HashSet; 2 import java.util.Set; 3 4 public class shuiwang { 5 public static void main(String[] args) { 6 Object array[]={1,2,3,4,5,6,23,12,12,1,1,1,1,1,1,1,1,1,1,11,1,1,245,11,1,11,1,};//建立数组存放取出状态的时间 7 8 Set<Object> s = new HashSet<Object>();// HashSet用来去掉重复 9 for (Object o : array) { 10 s.add(o); 11 } // 现在的集合s中无重复的包含array中的所有元素 12 13 Object[] obj = s.toArray();// 把集合s中的元素存入数组obj2中 14 int[] n = new int[obj.length];// 这个数组用来存放每一个元素出现的次数 15 16 int max = 0; 17 for (int i = 0; i < obj.length; i++) { 18 int cout = 0; 19 for (int j = 0; j < array.length; j++) { 20 if (obj[i].equals(array[j])) 21 cout++; 22 // 用obj中的元素跟array中的每一个比较,如果相同cout自增 23 } 24 n[i] = cout;// 每一个元素出现的次数存入数组n 25 // 数组n的下标i跟数组obj的下标是一一对应的。 26 if (max < cout) {// 得到元素出现次数最多是多少次 27 max = cout; 28 } 29 } 30 31 for (int i = 0; i < n.length; i++) { 32 if (max == n[i]) { 33 // 如果出现的次数等于最大次数,就输出对应数组obj中的元素 34 System.out.println("发帖最多的id是:"+obj[i]); 35 } 36 } 37 System.out.println("发过帖的id有:"+s); 38 int b=array.length; 39 System.out.println("总发帖数为:"+b); 40 if(max>b/2) 41 System.out.println("水王发帖数为:"+max); 42 else 43 System.out.println("水王发帖数不足"); 44 } 45 46 }
运行截图: