键盘输入一个字符串,统计每个字符出现的次数,并且按照结果格式输出

时间:2023-01-04 00:23:00

键盘输入一个字符串,统计每个字符出现的次数,并且按照结果格式输出。

/*
 * 需求:"aababcabcdabcde",获取字符串中每一个字母出现的次数,要求结果输出格式是:
 * a(5)b(4)c(3)d(2)e(1)

 *
 * 分析:
 *         A:定义一个字符串
 *         B:定义一个TreeMap集合
 *             键:Character
 *             值:Integer
 *         C:把字符串转换为字符数组
 *         D:遍历字符数组,得到每一个字符
 *         E:拿刚才得到的字符作为键去集合中找,看返回值:
 *             是null:说明该键不存在,就把该字符作为键,1作为值存储
 *             不是null:说明该键存在,就把值加1,然后重新存储该键和值
 *         F:定义字符串缓冲区变量
 *         G:遍历集合,得到键和值,按照要求拼接处理
 *         H:把字符串缓冲区转换为字符串输出
 */


/*
 * 需求:"aababcabcdabcde",获取字符串中每一个字母出现的次数,要求结果输出格式是:
 * a(5)b(4)c(3)d(2)e(1)
 * 
 * 分析:
 * 		A:定义一个字符串
 * 		B:定义一个TreeMap集合
 * 			键:Character
 * 			值:Integer
 * 		C:把字符串转换为字符数组
 * 		D:遍历字符数组,得到每一个字符
 * 		E:拿刚才得到的字符作为键去集合中找,看返回值:
 * 			是null:说明该键不存在,就把该字符作为键,1作为值存储
 * 			不是null:说明该键存在,就把值加1,然后重新存储该键和值
 * 		F:定义字符串缓冲区变量
 * 		G:遍历集合,得到键和值,按照要求拼接处理
 * 		H:把字符串缓冲区转换为字符串输出 
 */

package cn.itcast_02;

import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;

public class TreeMapDemo {
	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);

			// 是null:说明该键不存在,就把该字符作为键,1作为值存储
			if (i == null) {
				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 resulut = sb.toString();
		System.out.println("resulut:" + resulut);
	}
}