JAVA----统计字符串中每个字符出现的个数
需求:键盘录入一个字符串,要求统计每个字符出现的次数。
分析:
①要统计每个字符出现的次数,可以利用HashMap的键值对(HashMap的一个基本知识点),键设置为字符,值为出现的次数
②注意:键是字符,应该用它的包装类Character,而不用char 值也一样,应用包装类Integer
思路:
①键盘录入一个字符串
②创建HashMap集合,键是Character,值是Integer
③遍历字符串,得到每一个字符,利用方法 charAt(int index) 它的作用是获得索引对于的字符 范围是0-length-1
④拿得到的每一个字符作为键到HashMap集合中去找对于的值,看其返回值
如果返回null,则说明该字符在HashMap中不存在,就把它存入键中,并设置它的值为1了
如果返回不是null,则说明该字符在HashMap中存在,把其对应值加1,再重新存储该字符和对应的值 //重新存储便会出现键相同不覆盖,值不同而被覆盖
⑤遍历HashMap集合,得到键和值,按要求进行拼接 运用到StringBuilder方法 利用其append拼接
⑥输出结果
代码实现:
package Collection.Map;
import java.util.*;
public class emergeCount {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.nextLine();
// HashMap<Character, Integer> hm = new HashMap<>();//HashMap存储的键和值不会自动排序,而TreeMap和HashMap用法一致,但前者会进行自动排序
TreeMap<Character, Integer> hm = new TreeMap<>();
for (int i = 0; i < s.length(); i++) {
char key = s.charAt(i);//charAT返回指定索引处的char值索引范围为1——length-1 并将遍历得到的每一个字符设置为键(key)
Integer value = hm.get(key);//这里进行了自动装箱动作,把基本类型char装箱为了对应引用类型(也就是包装类型Integer)
if (value == null) {
hm.put(key, 1);
} else {
value++;
hm.put(key, value);
}
}
StringBuilder sb = new StringBuilder();//StringBuilder方法更好输出hashmap中的键值对
Set<Character> ks = hm.keySet();//获取hashmap中的键 放入到set集合中
for (Character character : ks) {//增强For循环遍历set集合
Integer value = hm.get(character);//获取键所对应的值
sb.append(character).append("(").append(value).append(")");//将其拼接并输出
}
String s1 = sb.toString();//将拼接后的字符转换为字符串(字符+数字)
System.out.println(s1);
}
}
法二:统计字符串中出现最多的字符(只有大写字母),并输出,如果有同等最多,则按字母顺序表输出:
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
char[] chars=s.toCharArray();//将输入得到的字符串转换为字符数组
int[] arr=new int[26];
for (int i = 0; i < chars.length; i++) {
arr[(int)chars[i]-65]++;//0-25下标对应的是‘A’-‘Z’
}
int max=0;
for (int i = 0; i < arr.length; i++) {
if (arr[i]>max)//遍历获取出现次数最多的字母
max=arr[i];
}
for (int i = 0; i < arr.length; i++) {
if (arr[i]==max)
System.out.print((char)(i+65));//将数字0-25转换为对应的‘A’-‘Z’
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix