黑马程序员技术交流社区

标题: 求大神指点迷津,在线等,提供思路也可,谢谢啦 [打印本页]

作者: 浅色寂语66    时间: 2016-8-3 00:08
标题: 求大神指点迷津,在线等,提供思路也可,谢谢啦
3.分析以下需求,并用代码实现:
(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)
作者: showJiang    时间: 2016-8-3 00:16
利用HashMap键元素不能重复的特性。当存入键相同的元素是,会替换元素对应的值。所以在存入字符时,判断集合中是否有该元素,有值就+1,没有,值就存入1
作者: 浅色寂语66    时间: 2016-8-3 00:35
只要静下心来认真思考,是可以的
public class homework2 {
                public static void main(String[] args) {
                        Scanner sc =new Scanner(System.in);
                        System.out.println("请输入您的字符串");
                        String str=sc.next();
                        //将字符串变成字符数组
                        char[] arr = str.toCharArray();
                        //遍历字符数组
                        //定义HashMap集合,来存入字符及对应出现的次数
                        HashMap<Character,Integer> hs = new HashMap<>();
                        for (char thisarr : arr) {
                                Integer num = hs.get(thisarr);  //注意   此刻num为引用数据类型
                                if(num==null) {
                                        hs.put(thisarr, 1);
                                } else {
                                        hs.put(thisarr, num+1);
                                }
                        }
                        System.out.println(hs);
                        //将HashMap集合中的数据封装成a(2)b(1)k(2)...
                        //利用StringBuilder完成字符串的拼装
                        StringBuilder sb = new StringBuilder();
                        for (Map.Entry<Character,Integer> entry : hs.entrySet()) {
                                sb.append(entry.getKey()).append("(").append(entry.getValue()).append(")");
                        }
                        System.out.println(sb.toString());               
                }
        }

       

作者: 18211001681    时间: 2016-8-3 22:52
明确楼上说的思路,很好写的
作者: 萧梅子    时间: 2016-10-13 00:25
浅色寂语66 发表于 2016-8-3 00:35
只要静下心来认真思考,是可以的
public class homework2 {
                public static void main(String[] args) {

没有领悟好输出语句的表达
作者: 读书可以当饭吃    时间: 2016-10-13 02:33
3楼正解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2