班级有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();
// 处理每个键值对
}