Java 使用映射统计小写单词中字母出现次数的静态方法
我必须使用一个名为countLetters()的静态方法创建一个名为MakeMap的类。该方法应将由小写字母组成的单词作为参数,并返回单词中字母计数的映射。 这是主类的测试代码(我无法编辑):Java 使用映射统计小写单词中字母出现次数的静态方法,java,class,generics,hashmap,Java,Class,Generics,Hashmap,我必须使用一个名为countLetters()的静态方法创建一个名为MakeMap的类。该方法应将由小写字母组成的单词作为参数,并返回单词中字母计数的映射。 这是主类的测试代码(我无法编辑): import java.util.Map; 导入java.util.List; 导入java.util.ArrayList; 导入java.util.Collections; 公共班机 { 公共静态void main(字符串[]args) { Map count=MakeMap.countLetters(
import java.util.Map;
导入java.util.List;
导入java.util.ArrayList;
导入java.util.Collections;
公共班机
{
公共静态void main(字符串[]args)
{
Map count=MakeMap.countLetters(“hello”);
列表字母=新的ArrayList(count.keySet());
收集.分类(信件);
用于(字符字母:字母)
System.out.println(“有“+count.get(字母)+”的字母“+letter+””);
}
}
输出的格式也必须如下所示:
$java Main
字母“e”中有1个
字母“h”中有1个
字母“l”中有两个字母
字母“o”中有1个
这就是我到目前为止在MakeMap类中所尝试的。我觉得我只需要一些小的调整就可以让它工作了
import java.util.Map;
import java.util.TreeMap;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
public class MakeMap
{
public static Map countLetters(String word)
{
HashMap<Character, Integer> charCountMap = new HashMap<Character, Integer>();
String w = word.toLowerCase();
// checking each char of strArray
for(int i = 0; i < word.length(); i++)
{
if(charCountMap.containsKey(word.charAt(i)))
{
// If char is present in charCountMap,
// incrementing it's count by 1
charCountMap.put(word.charAt(i), charCountMap.get((word.charAt(i)) + 1 ));
}
else
{
// If char is not present in charCountMap,
// putting this char to charCountMap with 1 as it's value
charCountMap.put(word.charAt(i), 1);
}
}
return charCountMap;
}
}
import java.util.Map;
导入java.util.TreeMap;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.HashMap;
公共类MakeMap
{
公共静态映射计数字母(字符串字)
{
HashMap charCountMap=新HashMap();
字符串w=word.toLowerCase();
//检查strArray的每个字符
for(int i=0;i
这是我收到的错误消息:
注意:Main.java使用未经检查或不安全的操作。
注意:使用-Xlint:unchecked重新编译详细信息。不正确的括号应为:
charCountMap.put(word.charAt(i)、(charCountMap.get(word.charAt(i))+1))代码>
另外,您必须从此方法返回charCountMap
,而不是在那里打印出来,因此该方法必须定义为public static Map countlets(字符串词)
您好您在这里遇到问题:
charCountMap.put(word.charAt(i), charCountMap.get((word.charAt(i)) + 1 ));
一定是
charCountMap.put(word.charAt(i), charCountMap.get((word.charAt(i))) + 1 );
您应该返回charCountMap
如前所述,countlets()
在您的实现中返回void
;给定的代码期望它返回一个HashMap
。你可以在方法的末尾返回你的charCountMap
,它就可以工作了
一些补充说明:
你有一句台词
String w=word.toLowerCase()代码>
这没什么用,因为你再也不用w
;您需要将其更改为word
最后,如果您执行类似于
的操作,则括号错误很容易避免
charcurr=word.charAt(i)代码>
在循环中,然后使用curr
代替word.charAt(i)
。使它更容易阅读,看起来更干净。欢迎使用SO!像“我如何使这项工作”这样的问题很难回答,你能提供一些关于错误或你得到的输出的信息吗?
charCountMap.put(word.charAt(i), charCountMap.get((word.charAt(i))) + 1 );