package co.wang;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
/*
*
* 统计字符串中个字母出现的次数
* 如aababcabcdancde结果:a(5)b(4)c(3)d(2)e(1)
* 分析:
* 定义键盘录入字符串
* 定义一个Map集合 (由题意的返回的是一个有序的字符串,所以用TreeMap集合:有序(排序性)、唯一性)
* 键:Character 注意:这里是数据类型,首字母必须要大写!!
* 值:Integer
* 把字符串变成字符数组
* 遍历数组得到每一个字符
* 把拿到的字符作为键到集合中去找看是佛又返回值
* 是null:添加,并值为1
* 不是nul:覆盖,值++
* 定义字符串缓冲区
* 遍历集合并按照要求拼接
* 把字符串缓冲区变成字符输出
*
*/
public class sumarrayDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line =sc.nextLine();
TreeMap<Character,Integer> tm= new TreeMap<Character,Integer>();
char[] chs = line.toCharArray();
//遍历数组得到字符
for(char ch:chs){
//把拿到的字符作为键到集合中去找看是佛又返回值
Integer i=tm.get(ch);//char自动拆装箱,并返回值复制给integer类型的值
if(i==null){
//i==null,添加,并赋值 值为1
tm.put(ch, 1);
}
else
{
//i!==null,覆盖,并值++
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 result = sb.toString();
System.out.println(result);
}
}
|
|