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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Array先生 中级黑马   /  2016-9-21 22:57  /  380 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

       
2.分析以下需求,并用代码实现:
        (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)
                 

2 个回复

倒序浏览
我现改着做的,.. 为了分也是拼了..
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class Test {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入字符串:");
                String str = sc.next();
                // 创建一个map对象
                HashMap<Character,Integer> map = new HashMap<>();
               
                char[] ch_arr = str.toCharArray();
               
                for (char c : ch_arr) {
                        if(map.containsKey(c)) {
                                // 若已经存在字符, 则 值加1次
                                int times = map.get(c);
                                map.put(c, times+1);
                        } else {
                                // 若不存在,值:存1次
                                map.put(c,1);
                        }
                }
                Set<Entry<Character,Integer>> set = map.entrySet();
                for (Entry<Character, Integer> entry : set) {
                        method(map,entry.getKey());
                }
               
        }
        public static void method(HashMap<Character,Integer> map, char c) {
                System.out.print(c+"("+map.get(c)+")");
        }
}
回复 使用道具 举报
package com.heima.practise;

import java.util.TreeMap;
import java.util.Scanner;

/**
*2.分析以下需求,并用代码实现:
*      (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)
* @author John
* 分析:
* 1.创建键盘录入对象,
* 2,将字符串转变成一个字符数组
* 3,创建一个TreeMap集合,键为Charactor类型,值为Integer类型
* 4,遍历字符数组,获取数组中的每一个字符,并将其存入到map集合中,存入集合中之前,判断集合中是否存在与该字符c相同的字符
*                 相同:将键为c,值为集合.get(c)+1存入集合中
*                 不相同:将键为c,值为1存入集合中
* 5,遍历集合,将集合中的元素打印到控制台上
*/
public class GetCount {
        public static void main(String[] args) {
                //创建键盘录入对象
                Scanner scanner = new Scanner(System.in);
                System.out.println("请输入一个字符串");
                String line = scanner.nextLine();
                //将字符串转变成一个字符数组
                char[] arr = line.toCharArray();
                //3,创建一个HashMap集合,键为Integer类型,值为Character类型
                TreeMap<Character, Integer> hm = new TreeMap<>();
                /*
                 * 遍历字符数组,获取数组中的每一个字符,并将其存入到map集合中,存入集合中之前,判断集合中是否存在与该字符c相同的字符
                 *                 相同:将键为c,值为集合.get(c)+1存入集合中
                 *                 不相同:将键为c,值为1存入集合中
                 */
                for (int i = 0; i < arr.length; i++) {
                        char c = arr[i];
                        if (!hm.containsKey(c)) {
                                hm.put(c, 1);
                        }else {
                                hm.put(c, hm.get(c) + 1);
                        }
                }
                //遍历map集合获取集合中的元素,并打印到控制台上
                for (char key : hm.keySet()) {
                        int value = hm.get(key);
                        System.out.print(key + "(" + value + ")");
                }
        }
}


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马