分析:
1.我们需要先收集投票信息,但是八十个信息太多了,不能全部手动输入,所以我们可以模拟这个信息。我先用一个字符串存储全部结果“ABCD”,然后通过生成0-3的随机数,然后通过charAt()方法,获取字符。
题外话:通过这个我想到,设计转盘游戏时,怎么控制不同结果的概率。我的方法时增加字符串里不同字符的数量,概率就可以设计了。我又想,前端是怎样,不同的结果播放不同的动画,后端肯定先出一个,然后由前端渲染动画。
2.我们用ArrayList来存储投票信息。
3.然后我们用HashMap来存储统计信息
4.我们先统计出最大投票数,然后遍历HashMap 打印结果。
package com.ding.javaai;
import java.util.*;
public class demo {
static List<Character> data = new ArrayList<Character>();
static Map<Character,Integer> outcome = new HashMap<>();
public static void main(String[] args) {
CollectData();
Statistics();
System.out.println(outcome);
System.out.println("--------------------");
verify();
System.out.println("--------------------");
out();
}
private static void out() {
char o;
int maxcount=0;
// 使用迭代器遍历键值对
Iterator<Map.Entry<Character, Integer>> iterator = outcome.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<Character, Integer> entry = iterator.next();
Character key = entry.getKey();
Integer value = entry.getValue();
if(maxcount< value)maxcount = value;
}
System.out.println("最想去的景点为:");
iterator = outcome.entrySet().iterator();//迭代器重新指向map开头
while (iterator.hasNext()) {
Map.Entry<Character, Integer> entry = iterator.next();
Character key = entry.getKey();
Integer value = entry.getValue();
if(maxcount==value) System.out.println(key+"\t");
}
}
private static void verify() {
int a,b,c,d;
a=b=c=d=0;
char k;
for(int i = 0; i < data.size();i++){
k = data.get(i);
switch (k){
case 'A': a++;break;
case 'B': b++;break;
case 'C': c++;break;
case 'D': d++;break;
}
}
System.out.println("a/b/c/d\t"+a+"/"+b+"/"+c+"/"+d);
}
private static void Statistics() {
for (char c:data) {
switch (c){
case 'A': Add(c);break;
case 'B': Add(c);break;
case 'C': Add(c);break;
case 'D': Add(c);break;
}
}
}
private static void Add(char c) {
if (outcome.containsKey(c)) {
int tmp = outcome.get(c);
tmp++;
outcome.put(c, tmp);
} else {
// 若键不存在,初始化为 1
outcome.put(c, 1);
}
}
public static void CollectData(){
String s = "ABCD";
for(int i = 0; i < 80;i++){
Random random = new Random();
int randomNumber = random.nextInt(4);
data.add(s.charAt(randomNumber));
}
}
}