我正在尝试查找并打印出多个字符串中的单词。它几乎可以工作。然而,我正在与一个小问题作斗争。由于它们在句子中出现两次,因此打印出两次。我希望它们只打印一次:
这是我的代码:
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String sentence = "is this a sentence or is this not ";
String[] myStringArray = sentence.split(" "); //Split the sentence by space.
int[] count = new int[myStringArray.length];
for (int i = 0; i < myStringArray.length; i++){
for (int j = 0; j < myStringArray.length; j++){
if (myStringArray[i].matches(myStringArray[j]))
count[i]++;
//else break;
}
}
for (int i = 0; i < myStringArray.length; i++) {
if (count[i] > 1)
System.out.println("1b. - Tokens that occurs more than once: " + myStringArray[i] + "\n");
}
}
}
答案 0 :(得分:0)
您可以尝试使用for (int i = 0; i < myStringArray.length; i+=2)
。
答案 1 :(得分:0)
在第一场比赛中休息。那么它也不会增加第二场比赛。
答案 2 :(得分:0)
您的代码存在一些问题。
如果您注意到,您的代码将查看n个元素的列表n ^ 2次。 如果单词的出现次数是两次。您将两次递增每个单词的计数值。 您需要跟踪的是您已经看过的单词集,并检查您遇到的新单词是否已经被看到。
如果你的句子中出现了3个单词,那么每个单词的计数为3. 3是不需要为每个标记存储的冗余数据,而只是单词。
如果你知道Map
如何运作,那么这一切都可以轻松完成。
这是一个可行的实现。
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
String sentence = "is this a sentence or is this not ";
String[] myStringArray = sentence.split("\\s"); //Split the sentence by space.
Map <String, Integer> wordOccurrences = new HashMap <String, Integer> (myStringArray.length);
for (String word : myStringArray)
if (wordOccurrences.contains(word))
wordOccurrences.put(word, wordOccurrences.get(word) + 1);
else wordOccurrences.put(word, 1);
for (String word : wordOccurrences.keySet())
if (wordOccurrences.get(word) > 1)
System.out.println("1b. - Tokens that occurs more than once: " + word + "\n");
}
}
答案 3 :(得分:0)
我们想从输入字符串中找到重复的单词。所以,我建议采用以下方法:
- 制作一个哈希地图实例。键(String)将是单词,值(Integer)将是其出现的频率。
- 使用split(“\ s”)方法拆分字符串,以生成仅包含单词的数组。
- 引入一个整数类型'frequency'变量,初始值为'0'。
- 迭代字符串数组并在检查频率后,将每个元素(或单词)添加到地图中(如果该键的频率为0)或者 密钥(字)存在,只增加频率1.
- 所以你现在只剩下每个单词及其频率。
醇>
例如,如果输入字符串是“我们变脏了,因为这个地球受到污染。我们必须停止它。”
所以,地图将是
{(“We”,2),(“are”,1),(“getting”,2),(“dirty”,1),(“as”,1),(“this”,1),( “earth”,1),(“is”,1),(“污染”,1),(“必须”,1),(“停止”,1),(“它。”,1)} <登记/>
现在您知道下一步是什么以及如何使用它。我同意Kaushik的意见。