【Java】统计字符出现次数
【Java】统计字符出现次数
需求
键盘输入字符串,统计其中出现的字符,及其出现次数
运行效果

代码
方法一
package com.cxl.demo01;
import java.util.Scanner;
/*统计字符次数
键盘输入字符串,统计其中出现的字符,及其出现次数
*/
public class CountChar {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入字符串:");
String str = sc.nextLine();
//拆分字符串
char[] chars = str.toCharArray();
//设置标识,与其他字符比较有相同则为true,代表此字符无需再去比较,减少重复
boolean[] flag = new boolean[chars.length]; //系统自动为其赋默认值,为false
for (int i = 0; i < chars.length ; i++) {
if (flag[i] == false){
int count = 1; //首次计算次数
for (int j = i+1; j < chars.length; j++) {
if (chars[i] == chars[j]){
//字符相同,即再次出现,次数+1,标识改为true,不再进行比较
count++;
flag[j] = true;
}
}
System.out.print(chars[i]+"("+count+") "); //打印字符及其出现次数
}
}
}
}
方法二:HashMap
package com.cxl.demo01;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
public class Demo03_CountChar2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入字符串:");
String str = sc.nextLine();
//创建HashMap集合
HashMap<Character, Integer> hm = new HashMap<>();
//遍历字符串
for (int i = 0; i < str.length(); i++) {
//字符串转为字符型,并计算其出现次数,存储与HashMap集合
char key = str.charAt(i);
Integer value = hm.get(key);
if (value == null){
hm.put(key,1);
}else {
value++;
hm.put(key,value);
}
}
//遍历HashMap集合,将其输出
StringBuilder sb = new StringBuilder();
Set<Character> keySet = hm.keySet();
for (Character key : keySet){
Integer value = hm.get(key);
sb.append(key).append("(").append(value).append(") ");
}
String result = sb.toString();
System.out.println(result);
}
}