java中Scanner键盘输入一个字符串 要求计算出每个字符出现的次数

要求Map List Set知识解决 求高手指点 留下程序和注释 谢谢了

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Scanner;

/*

* (1)利用键盘录入,输入一个字符串

(2)统计该字符串中各个字符的数量

*/

public class InputString {


public static void main(String[] args) {

//获取键盘输入的字符串

Scanner sc=new Scanner(System.in);

System.out.println("请输入一个字符串!");

String st=sc.nextLine();

//将字符串存分解成每个字符,存到数组中

char [] ch=st.toCharArray();

//创建map的集合,存储字符和出现的次数,其中将字符作为键值

Map<Character,Integer> map=new HashMap<Character,Integer>();

//使用循环,将数组ch中的元素遍历出来,并用计数器计算出现的次数

for(char c:ch) {

//判断字符c是否存在集合中,存在的话,更新map中的元素对(因为map中的元素是唯一的)

if(map.containsKey(c)) {

Integer count=map.get(c);

count=count+1;

map.put(c, count);

//如果不存在,将字符和出现的次数(1次),存到集合中

}else {

map.put(c, 1);

}

}

//用增强for循环,输出字符的出现次数

for(char key:map.keySet()) {

System.out.println(key+"的出现次数是"+map.get(key));

}

}

}

===================================

运行后的结果如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-21
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;

public class Test {

    public static void main(String args[]) {

        Scanner sc = new Scanner(System.in);
        System.out.print("请输入字符串:");
        String str = sc.next();

        Map<String, Integer> map = new LinkedHashMap<String, Integer>();

        int len = 0;

        // 字符串为空时,停止循环
        while (str.length() > 0) {

            // 当前字符串的长度
            len = str.length();

            // 取第一个字符
            String s = str.substring(0, 1);

            // 字符串,把这个字符通篇换成空格
            str = str.replaceAll(s, "");

            // 这个字符的次数就是 两个字符串长度的差
            map.put(s, len - str.length());
        }

        System.err.println(map);
    }
}

本回答被网友采纳
第2个回答  2013-08-15
        Scanner sc = new Scanner(System.in);
System.out.print("请输入字符串:");
String str  = sc.next();

// 把输入的字符串变成字符数组
char[] chs = str.toCharArray();

Map<Character ,Integer> map = new HashMap<Character, Integer>();
// 遍历字符数组
for (int i = 0; i < chs.length; i++) {

char key = chs[i];

// 把字符存入map
if(map.containsKey(key)){

Integer value = map.get(key);
value = value+1;

map.put(key, value);
}else{
map.put(key, 1);
}
}

// 打印结果
for (Character key : map.keySet()) {

System.out.println(key+"的出现次数:"+map.get(key));

}

追问

这个我看过了 哥 你粘过来的吧 大侠帮忙把注释写详细点 谢谢了

追答

呵呵,你说是粘过来的就是粘过来的吧