我用blueJ编码,我想做的是:
1.a)在getWordSet()
中创建一个WordGroup
方法:
WordGroup
对象作为参数a HashSet<String>
WordGroup
放入HashSet
HashSet<String>
1.b)在main
方法中:
getWordSet()
s WordGroup
方法
HashSet
返回并打印出来的文字 2.a)在名为WordGroup
的{{1}}中创建一个方法:
getWordCounts()
HashMap<String, Integer>
返回的所有字词,并将每个字词放入getWordArray()
并显示其次数HashMap
2.b)在HashMap<String, Integer>
方法中:
main
s getWordCounts()
WordGroup
检索密钥集(映射的字符串部分)keySet()
s WordGroup
方法完成getWordSet()
s WordGroup
以打印所有字词的完整列表,其中包含每个HashSet
的总和计数到目前为止我的代码:
HashMap
WordGroup类:
public class Main{
public static void main(String[] args){
WordGroup wordgroupOne= new WordGroup ("You can discover more about a person in an hour of play than in a year of conversation");
WordGroup wordgroupTwo= new WordGroup ( "When you play play hard when you work dont play at all");
String[] quoteOne = wordgroupOne.getWordArray();
String[] quoteTwo = wordgroupTwo.getWordArray();
for (String words : quoteOne){
System.out.println(words);
}
for (String words : quoteTwo){
System.out.println(words);
}
}
}
我已经走到这一步了,现在我被卡住了。我无法弄清楚如何从teh数组中获取单词到hashset和hashmap以及如何以所需的形式返回它们。附:对于奇怪的问题布局感到抱歉 - 如果不是代码格式,字符串在hashset之后就会一直消失。
答案 0 :(得分:1)
这里有一些基本的错误,你需要先解决,然后再进一步。
让我们先看看这个方法。
public HashSet<String> getWordSet(){
HashSet<String> set = new HashSet<String>();
for (String words : quoteOne){
words.add(word);
}
return words;
}
现在,您还没有将quoteOne
设置为任何内容,至少在此课程中没有。而你想要的是调用getWordArray()
的返回值。所以包含行
String[] quoteOne = getWordArray();
在这个方法的某个地方。
接下来,您尝试重用变量名称。你已经在这个类中得到了words
,所以为了避免混淆,如果你为循环迭代的String
变量使用不同的名称会更好。
现在,当您确实想要将字符串添加到words
时,您尝试将字符串添加到set
,因为set
是您将从此返回的内容方法。因此,除了使用add
更改行外,您还需要更改return
行,以使所有内容都匹配。
因此,请仔细考虑每个变量的用途,并确保正确使用每个变量。这些类型的错误中的一些将被编译器捕获,但这不是使用变量时草率的借口。
实际上将数组转换为HashSet
的方法实际上较短,但我认为如果你尝试使用这种方式首先做到这一点,这将是一个很好的练习。
现在让我们看看下一个方法。
public HashMap<String, Integer> getWordCounts() {
HashMap<String, Integer> map = new HashMap<String, Integer>();
for (String words : words) {
words.add(word);
}
return HashMap<String, Integer>;
}
你有正确的基本想法,但你错过了几个关键步骤。首先,就像在上一个方法中一样,您需要调用getWordArray()
。但是现在,你还需要一步。
当您遍历循环时,您需要使用HashMap
方法查看get
,以查看是否已在其中记录了某个特定字词。如果是这样,您需要查看针对它记录的Integer
,添加一个,然后将其放回地图中。如果没有,你可以在不做任何算术的情况下将某些东西放入地图中。
另外,请注意,向任何类型的地图添加内容的方法不是add
,而是put
,它需要两个参数 - 键和值。因此,在您的逻辑中,您可能会有像
map.put(word, 1);
您可以在此次通话中看到关键字和值。
最后,请考虑一下您的return
声明。您想要返回变量,而不是其类型。你能猜出你在那里使用哪个变量吗?
完成作业祝你好运。我试图指出你正确的方向,而不是为你做太多的事情。