我正在尝试制作一个字谜程序,在该程序中,我将哈希映射的所有键集与其值进行匹配。但是我的代码似乎没有计算第一个字符以外的字符。
**String a="aabbcc";
HashMap<Character,Integer> map= new HashMap<Character, Integer>();
for(int i=0;i<a.length();i++)
{
if(map.containsKey(a.charAt(i)))
{
int n= map.get(a.charAt(i))+1;
map.put(a.charAt(i), n);
}
else
{
map.put(a.charAt(i), 0);
}
}
System.out.println(map);**
输出:{a = 1,b = 1,c = 1}
问题出在map.put(a.charAt(i), 0)
。 0应该是1,因为当您第一次找到一个字符时,计数是1。
当然,您会得到这个结果:)
每个字符a,b,c在您的字符串中显示2次。现在,例如,对于第一个“ a”,您将进入else
分支,因为它尚未包含在地图中。因此,a
将被映射到0
。然后,对于字符串中的第二个“ a”,您将进入if
分支,因为键a
已存在于映射中。并且0
将增加到1
。最后,您将a
映射到1
。与b和c相同:)