输入手机号码输出手机号码中各个数字出现的次数 , 并判断其中出现次数最多的那个数字是几?

来源:互联网 发布:windows10怎么设置网络 编辑:程序博客网 时间:2024/05/16 23:58

/**
 * 要求:输入手机号码输出手机号码中各个数字出现的次数
 * 并判断其中出现次数最多的那个数字是几?
 *推广:可以用来测试一个其他的类型,用来统计其中每个字符出现的次数
 * 和出现次数最多的某些字符
 */
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;


public class TreeMapHomeWork {


public static void main(String[] args) {
show();
}


@SuppressWarnings("resource")
public static void show() {
System.out.println("你的手机号码为:");
String s = new Scanner(System.in).next();
char[] number = s.toCharArray();
// 创建一个集合用来放置输入的手机号码
Map<Character, Integer> map = new HashMap<Character, Integer>();
for (int i = 0; i < number.length; i++) {
char kz = number[i];// 把手机号遍历输出并赋值给kz及键内的元素
if (!map.containsKey(kz)) {// 判断映射内是否包含这个键内元素
map.put(kz, 1);// 如果没有则添加进入map,赋予其value的值为1
} else {// 如果映射关系中含有这个元素
int count = map.get(kz);
count++;// 那么计数器加一
map.put(kz, count);// 键内元素不变,value内的值加一(即count的值)
}
}
Set<Entry<Character, Integer>> set = map.entrySet();
// 创建一个映射关系的 set 视图,用来映射
for (Entry<Character, Integer> entry : set) {
// 使用增强for循环来遍历输出手机号码的每一个数字的出现的次数
System.out.println("数字【"+entry.getKey() + "】出现的次数为【" + entry.getValue()+"】次");
}
System.out.println(">--------------分割线----------------<");
Collection<Integer> collection = map.values();// map的value值的集合
int max = Collections.max(collection);
//调用Collections中的max方法,max详情参考API
// max即手机号码中出现次数最大值
Set<Entry<Character, Integer>> set2 = map.entrySet();
// 创建一个映射关系的 set 视图,用来映射
for (Entry<Character, Integer> entry : set2) {
// 使用增强for循环遍历输出
if (entry.getValue() == max) {
// 只输出次数最多的数字
System.out.println("数字["+entry.getKey() + "]出现的次数最多,为:[" + max+"]次");
}
}
}


}
0 0