本帖最后由 wkz_crystal 于 2015-3-22 00:07 编辑
如图所示:
- <font size="3">/*
- 统计一个字符串中“每种字母出现的次数”,并且打印出来
- 打印的格式:x(几次)y(几次)……
- 例如字符串:gfadgagkolauinaaf
- 【思路】
- 1.将字符串转化成为字符数组,因为要对每一个字母进行操作
- 2.定义一个map集合,因为打印结果的字母有顺序,所以要用到treemap集合
- 3.遍历字符数组
- 将每一个字母作为健去查map集合,
- 如果返回为null,将该字符和1存入到map集合中,
- 如果返回不为null,说明该字符和对应的次数在集合中已经存在了,
- 这时候,直接取出字符次数,自增之后再重新按照该健存入到集合中
- */
- import java.util.*;
- class GetCharNumber5
- {
- public static void main(String[] args)
- {
- String str="jfkl;ajf;lajfaljfl;afasfsadfds";
- getInfer(str);
- }
- public static void getInfer(String str)
- {
- char[] ch=str.toCharArray();
- TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();
- for (int i=0; i<ch.length;i++ )
- {
- Integer value=tm.get(ch[i]);
-
- if (value == null)
- {
- tm.put(ch[i],1);
- }else
- {
- value=value+1;
- tm.put(ch[i],value);
- }
- }
-
- /*StringBuffer sb=new StringBuffer();
- Set<Map.Entry<Character,Integer>> setMap=tm.entrySet();
- Iterator<Map.Entry<Character,Integer>> it=setMap.iterator();
-
- while (it.hasNext())
- {
- Map.Entry<Character,Integer> me=it.next();
- Character key=me.getKey();
- Integer value=me.getValue();
- sb.append(key+"("+value+")"+"、");
- }
- sop(sb);
- */
- StringBuffer sb=new StringBuffer();
- Set<Character,Integer> set=tm.keySet();
- Iterator<Character,Integer> it=set.iterator();
- while (it.hasNext())
- {
- Character key=it.next();
- Integer value=tm.get(key);
- sb.append(key+"("+value+")"+"、");
- }
- sop(sb);
- }
-
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }</font>
复制代码 用entrySet可以实现,是正确的,但是用keySet为什么就不行呢? |
-
1.jpg
(248.83 KB, 下载次数: 11)
类型变量数目错误;
|