• 统计候选人


    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("无效命令!");
    }
    }

    }

    }

    运行结果:
    
    
    
     
    不要因为怕被玫瑰的刺伤到你,就不敢去摘玫瑰。
  • 相关阅读:
    LINQ中selectManay操作符(五)
    LINQ中select操作符(四)
    高效并发进阶-白银
    JVM回收算法
    一个类是怎么被JVM执行的
    一纸理解JVM
    单例模式
    深入理解Spring AOP思想
    深入理解Spring IOC工作原理
    HashMap扩容全过程
  • 原文地址:https://www.cnblogs.com/gccwelcome/p/12787532.html
Copyright © 2020-2023  润新知