package d2_map; import java.util.*; public class MapTest2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //定义一个集合来记录投票情况 Map<String, List<String>> data = new HashMap<>(); //定义一个集合来记录每个选择的情况 Map<String,Integer> infos = new HashMap<>(); while (true){ System.out.println("欢迎进入投票系统"); System.out.println("1.投票 2.当前投票情况 3.统计结果 4.退出系统"); System.out.println("请输入您的选择:"); int command = sc.nextInt(); switch (command) { case 1 -> //投票 putSelect(sc, data); case 2 -> //当前投票情况 currectData(data); case 3 -> //统计结果 results(infos, data); case 4 -> //退出系统 System.exit(0); default -> System.out.println("无效命令,请您重新输入!!"); } } } /** * 统计结果 * @param infos 选择情况 * @param data 投票情况 */ private static void results(Map<String, Integer> infos, Map<String, List<String>> data) { //提取所有人的投票情况 Collection<List<String>> values1 = data.values(); //[A B C D] [A B] [C D] // value //[A B C D] // s //遍历所有的投票情况,统计每个选择的人数 values1.forEach(value -> value.forEach(s -> { //确认选择集合中是否存在当前的选择, //如果存在,则将s的值放入集合中,并将Integer(该选择的人数)加1 //如果不存在,则将s的值放入集合中,并将Integer置1 if(infos.containsKey(s)){ infos.put(s,infos.get(s) + 1); }else { infos.put(s,1); } })); System.out.println("投票结果:"); System.out.println(infos); } /** * 当前投票情况 * @param data 投票数据集合 */ private static void currectData(Map<String, List<String>> data) { System.out.println("当前投票情况:"); //遍历输出投票情况 data.forEach((k,y) -> System.out.println(k + ":" + y)); } /** * 投票(将学生的选择放入集合中) * @param sc 扫描器 * @param data 投票数据集合 */ public static void putSelect(Scanner sc,Map<String,List<String>> data){ System.out.println("请输入您的姓名:"); String name = sc.next(); System.out.println("景点:A B C D"); System.out.println("请输入您的选择:"); String select = sc.next(); //将输入的字符串转换为字符存放到字符数组中 char[] selects1 = select.toCharArray(); //定义一个字符串数组来存放所选择的景点 String[] s = new String[4]; for (int i = 0; i < selects1.length; i++) { s[i] = String.valueOf(selects1[i]); } //定义一个选择集合 List<String> selects2 = new ArrayList<>(); //将数组存入选择集合中 Collections.addAll(selects2,s); //剔除空值 for (int i = selects2.size() - 1; i >= 0; i--) { if (selects2.get(i) == null){ selects2.remove(i); } } //将选择集合存入投票数据集合中 data.put(name,selects2); System.out.println(name + "先生/女士,您的选择是:" + selects2); } }
【Java算法】简易的投票系统
于 2022-11-21 00:17:47 首次发布