A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

上干货~

----------------------------------------------------------------------------------------------------------------
题文要求:

/*1.有一个字符串,内容是: String str="heima shi wo jia, Da Jia Yao Ai Hu Ta!";
编写代码,统计每个字符出现的次数, 输出的结果如下: a(2),b(3)....A(3),B(4)....*/
------------------------------------------------------------------------------------------------------------------------
代码区:


import java.util.Comparator;
import java.util.TreeMap;

public class HomeWork01 {
        public static void main(String[] args) {
                //1,定义一个字符串去储存它.
                 String str="heima shi wo jia, Da Jia Yao Ai Hu Ta!";
                 //2,使用统计 它,并且排序,使用TreeMap,键是 字符串, 值是 Character
                 TreeMap<Character, Integer> tm = new TreeMap<>(new Comparator<Character>() {

                        @Override
                        public int compare(Character o1, Character o2) {
                                //从新写入排列顺序,a-z 97-123 A-56
                                if (o1>='A'&&o1<='Z'&&o2>='a'&&o2<='z') {
                                        return o1-o2+100;
                                }        else if (o1>='A'&&o1<='Z'&&o2>='A'&&o2<='Z') {
                                        return o1-o2;
                                }        else  if (o1>='a'&&o1<='z'&&o2>='A'&&o2<='Z') {
                                        return o2-o1;
                                }        else  if (o1>='a'&&o1<='z'&&o2>='a'&&o2<='z') {
                                        return o1-o2;
                                }       
                                        return o1-o2;
                               
                               
                        }
                });
                 //3,去重复
                 String regex = "[^a-zA-z]+";
                 String str1 = str.replaceAll(regex, "");
                // System.out.println(str1);
                 char []arr = str1.toCharArray();
                 for (int i = 0; i < arr.length; i++) {
                         if (!tm.containsKey(arr)) {
                                tm.put(arr, 1);
                        } else {
                                tm.put(arr, tm.get(arr)+1);
                        }
                }
                 //循环输出
                 for (char c : tm.keySet()) {
                        System.out.print(c+"("+tm.get(c)+")"+" ");
                }
                 
                 
        }
}
------------------------------------------------------------------------------------------------------------------------------
总结下:
这道题,用到了 统计的思想, 还有如何排序的问题
然后,,
我进行了  正则的拆分,
然后变成 字符数组,
然后 创建了TreeMap 这个 双列集合,
键存  字符,    值存   出现的次数
通过  PUT 方法 放进去,
然后遍历 得出  每个字符的  输出次数.

1 个回复

正序浏览
统计思想,首先要用到计数,给一个初始值,int count =0
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马