黑马程序员技术交流社区
标题:
【TreeMap小程序中】如何解决错误: 类型变量数目错误;
[打印本页]
作者:
wkz_crystal
时间:
2015-3-22 00:05
标题:
【TreeMap小程序中】如何解决错误: 类型变量数目错误;
本帖最后由 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, 下载次数: 12)
下载附件
2015-3-22 00:03 上传
类型变量数目错误;
作者:
wkz_crystal
时间:
2015-3-22 00:25
本帖最后由 wkz_crystal 于 2015-3-22 00:26 编辑
大家发现问题没有,我是太不仔细了,公然把keySet的方法返回的Set类型,泛型中定义成了<Character,Integer>,现在才发现是错误的,得到的set集合的泛型类型只有一种,应该是<Character>才是,晕死了……哎……还在这里研究老半天!大家有同样的错误吗?所以代码应该是:
Set<Character> set=tm.keySet();
Iterator<Character> it=set.iterator();
复制代码
就OK了……
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2