JAVA 7-3 统计投票

班级有50位同学,从输入的三个同学中评选“三好学生”,输出每个人的票数和最多票数的同学。

输入格式:

学生姓名

输出格式:

每个人的票数

最多票数的同学

输入样例:

在这里给出一组输入。例如:

tom
bob
jerry

18 -299输出样例:

在这里给出相应的输出。例如:

tom 12
bob 22
jerry 16
bob

 

 package test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;

public class Main06 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Map<String,Integer>map= new HashMap<>();
		Scanner sc= new Scanner(System.in);
		String  vote[]= new String[50];
		for(int i=0;i<3;i++) {
			String st=sc.next();
			map.put(st, 0);
		}
		List<String> keys = new ArrayList<>(map.keySet());
		
		Random rad=new Random();
		String tmName=null;
		
		for(int i=0;i<vote.length;i++) {
			int index= rad.nextInt(3);
			tmName= keys.get(index);
			if(map.containsKey(tmName)) {
				map.put(tmName, map.get(tmName)+1);
			}
			
		}
//		Lamda表达式写法
		/*
		 * map.forEach((key,value)->{ System.out.println(key+" " +value); });
		 */
//		普通遍历方法
		 for(Map.Entry<String,Integer>entry :map.entrySet()){
	            System.out.println(entry.getKey()+" " +entry.getValue());
	        }
		int max=0;
		String name=null;
		for(Map.Entry<String,Integer>entry :map.entrySet()){
			if(entry.getValue()>max) {
				max=entry.getValue();
				name=entry.getKey();
			}
		}
		System.out.print(name);
	}

}

此题关键:
    使用随机数选择候选人并更新得票数:通过使用 Random 类 rad 生成随机数,循环 50 次,每次生成一个随机数 index(0、1 或 2),然后根据 index 获取 keys 列表中相应位置的候选人名字 tmName,再通过 map.containsKey(tmName) 判断 map 中是否存在该候选人。如果存在,则通过 map.put(tmName, map.get(tmName)+1); 将对应候选人的得票数加 1。

遍历Map的集中常用方法:

1.使用 entrySet() 方法遍历:

Map<String, Integer> map = new HashMap<>();

for (Map.Entry<String, Integer> entry : map.entrySet()) {
    String key = entry.getKey();
    Integer value = entry.getValue();
}

2.使用 keySet() 方法遍历键:

Map<String, Integer> map = new HashMap<>();
// 添加键值对到 map

for (String key : map.keySet()) {
    Integer value = map.get(key);
    // 处理每个键值对
}

3.使用迭代器遍历键值对:

Map<String, Integer> map = new HashMap<>();
// 添加键值对到 map

Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
    Map.Entry<String, Integer> entry = iterator.next();
    String key = entry.getKey();
    Integer value = entry.getValue();
    // 处理每个键值对
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mxrone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值