package com.heima.practise;
import java.util.TreeMap;
import java.util.Scanner;
/**
*2.分析以下需求,并用代码实现:
* (1)利用键盘录入,输入一个字符串
* (2)统计该字符串中各个字符的数量
* (3)如:用户输入字符串"If~you-want~to~change-your_fate_I_think~you~must~come-to-the-dark-horse-to-learn-java"
* 程序输出结果:-(9)I(2)_(3)a(7)c(2)d(1)e(6)f(2)g(1)h(4)i(1)j(1)k(2)l(1)m(2)n(4)o(8)r(4)s(2)t(8)u(4)v(1)w(1)y(3)~(6)
* @author John
* 分析:
* 1.创建键盘录入对象,
* 2,将字符串转变成一个字符数组
* 3,创建一个TreeMap集合,键为Charactor类型,值为Integer类型
* 4,遍历字符数组,获取数组中的每一个字符,并将其存入到map集合中,存入集合中之前,判断集合中是否存在与该字符c相同的字符
* 相同:将键为c,值为集合.get(c)+1存入集合中
* 不相同:将键为c,值为1存入集合中
* 5,遍历集合,将集合中的元素打印到控制台上
*/
public class GetCount {
public static void main(String[] args) {
//创建键盘录入对象
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串");
String line = scanner.nextLine();
//将字符串转变成一个字符数组
char[] arr = line.toCharArray();
//3,创建一个HashMap集合,键为Integer类型,值为Character类型
TreeMap<Character, Integer> hm = new TreeMap<>();
/*
* 遍历字符数组,获取数组中的每一个字符,并将其存入到map集合中,存入集合中之前,判断集合中是否存在与该字符c相同的字符
* 相同:将键为c,值为集合.get(c)+1存入集合中
* 不相同:将键为c,值为1存入集合中
*/
for (int i = 0; i < arr.length; i++) {
char c = arr[i];
if (!hm.containsKey(c)) {
hm.put(c, 1);
}else {
hm.put(c, hm.get(c) + 1);
}
}
//遍历map集合获取集合中的元素,并打印到控制台上
for (char key : hm.keySet()) {
int value = hm.get(key);
System.out.print(key + "(" + value + ")");
}
}
}
|