【发布时间】:2021-07-02 13:11:17
【问题描述】:
我想知道“apple”之后的所有不同单词。我正在使用 HashSet 来获取这些单词,但我遇到了错误。
这是我在 main 中调用的方法。我应该得到 [banana, cherry] 作为返回值,但我只得到 [banana]。
ArrayList<String> test = new ArrayList<>();
test.add("orange");
test.add("apple");
test.add("banana");
test.add("cherry");
System.out.println(test);
System.out.println(problem1(test));
public static HashSet<String> problem1 (ArrayList<String> allWords){
HashSet<String> words = new HashSet<>();
String previousWord = "";
for(String currentWord : allWords)
{
if(previousWord.equals("apple")) {
words.add(currentWord);
}
previousWord = currentWord;
}
return words;
}
【问题讨论】:
-
'遇到错误',这是模糊的。你能说得更具体些吗
-
嘿,你有机会看到我剩下的问题吗?
-
用调试器单步调试你的程序。
-
为什么你认为你应该得到香蕉和樱桃?只有一个紧随在苹果之后立即(那是香蕉)。樱桃紧随香蕉之后,所以它似乎不符合你的标准。
-
@OHGODSPIDERS 感谢您的帮助!我将该行代码包装在一个 else 块中,我得到了预期的输出。这是一种有效的做法还是应该将语句放在 if 块中?