在java控制台上输入字母,最后统计每个字母出现的个数, eg: ----->aaabbc 打印:a(3), b(2),c(1)

如题所述

Scanner in = new Scanner(System.in);
System.out.println("请输入一个字符串:");
// 获取控制台输入内容
String aa = in.nextLine();
// 定义Map集合保存输入字符串及输入次数
Map<String, Object> map = new HashMap<String, Object>();
for (int i = 0; i < aa.length(); i++) {
char a = aa.charAt(i);
// 判断截取字符串是否为字母,97-122为小写字母,65-90为大写字母
if ((int) a < 97 || (int) a > 122)
continue;
// 判断Map里面是否已保存当前截取字符串
// 如果没有,保存key为截取字符串,输入次数为1,如果,在原来的输入次数上加1
if (map.get(a) == null)
map.put(String.valueOf(a), 1);
else
map.put(String.valueOf(a),
Integer.parseInt(map.get(a) + "") + 1);
}
// 因为Map集合没有排序功能,所以需要自己实现
// 定义List集合记录Map集合的key
List<String> list = new ArrayList<String>();
list.addAll(map.keySet());
// 对List集合正序排序
Collections.sort(list);
// 对List集合倒序排序
// Collections.sort(list, Collections.reverseOrder());
// 输出Map集合保存的输入次数
for (String a : list) {
System.out.print(a + "(" + map.get(a) + "),");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-10
有一个笨方法,就是加上一个class,里边包含两项,1个是 listener, 然后再放个countor进去,在程序里放26个字母分别监听,然后输出非零组 。 或者监听string, 然后用method找出字母出现的次数,输出非零项
第2个回答  2012-07-22
我不知道做啊