【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);
    }
}