【发布时间】:2015-12-03 17:58:33
【问题描述】:
我有一个长文本,存储在 String 中(即tstr1 im 代码)。现在我想将来自控制台的用户输入存储在String[](即itemsFromArray im 代码)中。
我希望对于存储在用户输入 String[] 数组中的每个单词,系统显示该单词在长 Text String[] 数组中出现的次数。我尝试过这种方式,但问题是系统只显示数组中第一个条目的计数,而下一个则显示为零。
btnNewButton.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
keyW = txtKeyword.getText();
search = textField.getText();
System.out.println("String for car = " + search);
System.out.println("String keyword = " + keyW);
WebDriver driver = new FirefoxDriver();
driver.get("https://en.wikipedia.org/wiki/" + search);
tstr1 = driver.findElement(By.xpath("//*[@id='content']")).getText();
String [] itemsFromArray = keyW.split(",");
Map<String, Integer> map = new HashMap<String, Integer>();
for (String word : itemsFromArray){
map.put(word, 0);
}
Scanner s = new Scanner(tstr1);
while (s.hasNext()){
String word = s.next();
if (map.containsKey(word)){
map.put(word, map.get(word) + 1);
System.out.println("Word1 '" + word + "' count:" + map.get(word));
} else {
System.out.println("Word2 '" + word + "' not in map");
}
}
driver.close();
}
});
【问题讨论】:
-
您可能想使用
Map<String, Integer>(字数->计数)。 -
遍历输入字符串并将计数(每个单词)存储在一个映射中,其中单词是键,值是计数。
-
我不太明白如何做到这一点,请您详细解释一下。谢谢!!!
-
@DanPaschevici 我添加了一些基本代码。它没有经过测试,但它应该能让你继续前进。让我知道它是否有错误。
-
如果你想超级高效,可以使用专为解决这个问题而设计的Aho-Corasick algorithm。
标签: java arrays string for-loop foreach