统计候选人

package com.cn;
import java.util.Map.Entry;
import java.util.*;

/**
* 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用“A”、”B”、”C”、”D”表示,
* 选举时开始计票, 若输入的不是“A”、”B”、”C”、”D”则视为无效票。
* 选举结束后获取各个候选人的得票数以及无效票的个数,
* 输出结果以添加候选人的顺序进行顺序输出,
* 最后一行为无效的数量。
* 同时getVoteResult命令为结束命令。
*/
public class ChooseLeader {


public static Map<String, Integer> leaders = new LinkedHashMap<String, Integer>();

//增加候选人名字
public static void addCandidate(String name) {
leaders.put(name, 0);
// System.out.println("增加成功" + name);
}

//选票
public static boolean vote(String name) {
boolean flag = false;
if (leaders.containsKey(name)) {
leaders.put(name, leaders.get(name) + 1);
flag = true;
} else {
flag = false;
}
// System.out.println("选举成功");
return flag;
}

//统计数据
public static void getVoteResult() {

System.out.println("开始统计 选举结果");
Map<String, Integer> result = new LinkedHashMap<String, Integer>();
//排序并且返回数据

//找到最大值
while (!leaders.isEmpty()) {
// System.out.println("每次找最大值 删除");
Iterator<Entry<String, Integer>> iterator = leaders.entrySet().iterator();
int max = Integer.MIN_VALUE;
String index = "";
while (iterator.hasNext()) {
Entry<String, Integer> entry = iterator.next();
if (entry.getValue() > max) {
// System.out.println(entry.getValue() + "?" + max);
index = entry.getKey();
max = entry.getValue();
}
}
// System.out.println(index+":"+max);
result.put(index, max);
leaders.remove(index);
}
//打印选举结果
System.out.println("选举的结果:" + result.size());
for (Entry<String, Integer> e : result.entrySet()) {
System.out.println(e.getKey() + ":" + e.getValue());
}

}

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);
String conmand = "";
while (scanner.hasNext()) {
conmand = scanner.nextLine();
String[] paramas = conmand.split(" ");
switch (paramas[0]) {
case "addCandidate":
addCandidate(paramas[1]);
break;
case "vote":
vote(paramas[1]);
break;
case "getVoteResult":
getVoteResult();
break;
// default:
// System.out.println("无效命令!");
}
}

}

}

运行结果:

 


 

 
posted @ 2020-04-27 16:23  ~gcc~  阅读(164)  评论(0编辑  收藏  举报