案例:统计字符数量
需求:
- 键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。
- 举例:键盘录入“aababcabcdabcde” 在控制台输出:“a(5)b(4)c(3)d(2)e(1)”
思路:
- 实现统计,需要两列,故采用Map集合来统计,键可用来保存当前字符,值用来保存字符出现的次数(因为键不可重复,值可覆盖)
具体实现:
- 首先创建Scanner对象从键盘接收一个被统计的字符串
- 遍历该字符串,同时进行判断
- 获取map的值,若为null 说明第一次存储,即将该键添加进集合 同时值为1
- 若获取到的值不为null 取出值后+1再存回
- 此循环结束便统计了
- 拼接字符串 用StringBuild对象拼接 按照要求遍历即可
- 详细代码如下:
运行结果:
package cn.dreamyi.demo1.doudizhu;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class CountNums {
public static void main(String[] args) {
/**
* - 案例需求
*
* - 键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。
* - 举例:键盘录入“aababcabcdabcde” 在控制台输出:“a(5)b(4)c(3)d(2)e(1)”
*
* -
*/
//键盘接受一个字符串1
String line = new Scanner(System.in).nextLine();
TreeMap<Character, Integer> hm = new TreeMap<>();
for (int i = 0; i < line.length(); i++) {
Character c = line.charAt(i);//得到每个字符
//首次存取
if (hm.get(c) == null) {
hm.put(c, 1);
} else {
//非首次
Integer count = hm.get(c);
count++;
hm.put(c, count);
}
}
StringBuilder sb = new StringBuilder();
Set<Character> key = hm.keySet();
for (Character c :key){
sb.append(c).append("(").append(hm.get(c)).append(")");
}
String s = sb.toString();
System.out.println(s);
}
}
公众号:从简出发【mmk_xgg】
关注一起进步呀