package cn.itcast_03;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
/*
* 统计字符串中每个字符的出现字数
*
* 分析:
* A:定义一个字符串(可以改进为键盘录入)
* B:定义一个TreeMap集合
* 键:Character (已经重写comparator方法)
* 值:Integer
* C:把字符串转换为数组
* D:遍历字符数组,得到每一个字符
* E:拿刚才得到的字符作为键到集合中去找值,看返回值
* 是null:说明键不存在,就把字符作为键,1作为值存储
* 不是null:说明改建存在,就把值加1,然后重新存储该键和值
* F:定义字符串缓冲区变量
* G;遍历集合,得到键和值,按照要求拼接
* H:把字符串缓冲区转换为字符串输出
*
*/
public class 统计字符串中每个字符的出现字数 {
public static void main(String[] args) {
// 定义一个字符串(可以改进为键盘录入)
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String line = sc.nextLine();
//定义一个TreeMap集合
TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
//把字符串转换为数组
char[] chs = line.toCharArray();
//遍历字符数组,得到每一个字符
for(char ch:chs) {
//拿刚才得到的字符作为键到集合中去找值,看返回值
Integer i = tm.get(ch);
if(i == null) {
//是null:说明键不存在,就把字符作为键,1作为值存储
tm.put(ch, 1);
}else {
//不是null:说明改建存在,就把值加1,然后重新存储该键和值
i++;
tm.put(ch, i);
}
}
//定义字符串缓冲区变量
StringBuilder sb = new StringBuilder();
//遍历集合,得到键和值,按照要求拼接
Set<Character> set = tm.keySet();
for(Character key:set) {
Integer value = tm.get(key);
sb.append(key).append("(").append(value).append(")");
}
//把字符串缓冲区转换为字符串输出
String s = sb.toString();
System.out.println(s);
}
}
统计字符串中每个字符的出现字数
最新推荐文章于 2022-10-15 17:59:36 发布