经典map集合问题,黑马作业题,1.利用键盘录入,输入一个字符串,.统计该字符串中各个字符的数量(提示:字符不用排序)

来源:互联网 发布:早教软件 编辑:程序博客网 时间:2024/06/15 22:34
package 作业;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

/*
 * 1.分析以下需求,并用代码实现    
    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)
        if(map.containsKey(c)){
            map.put(c,map.get(c)+1)
        }else{
            map.put(c,1);
        }
 */
public class 第一题 {

    public static void main(String[] args) {
        //创建键盘输入对象
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一串字符串:");
        String s = sc.nextLine();
        
        //转为字符数组
        char[] charArray = s.toCharArray();
        
        //创建一个map对象(char  次数)用来存放
        Map<Character,Integer> map=new HashMap<Character,Integer>();
        
        //取出每一个字符C,  并进行对比map中是否有,没有额话 先赋值1.有的话会去重 并且对应的value的次数值进行加1
        for (int i = 0; i < charArray.length; i++) {
            char c=charArray[i];
            if(map.containsKey(c)){
                map.put(c,map.get(c)+1);
            }else{
                map.put(c,1);
            }
        }
        
        
        //创建一个SufferBUider 对象,用与存储字符串  result 用来输出结果
        StringBuffer sb=new StringBuffer();
        StringBuffer result = null;
        
        //遍历map对象就行了
        Set<Character> keySet = map.keySet();
        
        for (Character cs : keySet) {    //cs为每一个key值
            //根据key值找次数
            Integer cishu = map.get(cs);
            result = sb.append(cs).append("(").append(cishu).append(")");
            //转为String
        }
        System.out.println(result);
    }
}

阅读全文
0 0
原创粉丝点击