- import java.util.Map;
- import java.util.Scanner;
- import java.util.Set;
- import java.util.TreeMap;
- /*
- * 需求:取出一个字符串中字母出现的次数。
- * 如:字符串:"abcdekka27qoq" ,输出格式为: a(2)b(1)k(2)...
- */
- public class Test1 {
- public static void main(String[] args) {
- //创建一个Sanner对象用于接收键盘录入的数据
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入一个字符串:");
- String s = sc.nextLine();
- //创建一个TreeMap的对象,用于存储字母和字母出现的次数
- TreeMap<Character,Integer> map = new TreeMap<>();
- //将字符串转换为字符数组
- char[] chs = s.toCharArray();
- //增强for循环遍历字符数组
- for (char c : chs) {
- //判断遍历到的字符是不是字母
- if((c>='A'&&c<='Z')||(c>='a'&&c<='z')){
- //如果是字母,在map中寻找相应的字母,并返回对应的值
- Integer num = map.get(c);
- //判断该值是否为空,若为空,就将该字符作为键,值为1存入map
- if(num==null){
- map.put(c, 1);
- //若不为空,则说明map中已经有该字符,此时只需要将该字符的对应值+1并重新存入map中替换原来的键值对即可
- }else{
- num++;
- map.put(c,num);
- }
- }
- }
- //得到一个TreeMap键值对对象的集合
- Set<Map.Entry<Character,Integer>> set = map.entrySet();
- //增强for遍历这个集合,或得每一个键值对,并且输出
- for (Map.Entry<Character, Integer> entry : set) {
- System.out.println(entry.getKey()+"("+entry.getValue()+")");
- }
- }
- }
复制代码
|
|