任何人都可以告诉我程序中的问题是什么吗?
String a[],b[];
int c[] = new int[b.length];
for (int j = 0; j < a.length; j++) {
for (int k = 0; k < b.length; k++) {
if (b[k].equals(a[j])) {
c[k]++;
} else {
c[k] = 0;
}
}
}
我在HashMap
中存储了数千个单词。现在,我想在每个文件中检查allWords
中出现一个单词的时间。
你能指出我的计划中的错误,或者让我知道我该怎么做?
答案 0 :(得分:3)
我认为此行不必要地重置您的计数器:
newData[j] = 0;
尝试删除它:
for (int j = 0; j < oneFileWords.length; j++) {
for (int k = 0; k < allWords.length; k++) {
if (allWords[k].equals(oneFileWords[j])) {
newData[j]++;
}
}
}
如果你想为每个文件中的每个单词保留一个单独的计数,那么你需要使用二维数组。
int newData[][] = new int[oneFileWords.length][allWords.length];
然后,您可以使用newData[j][k]
访问它。
答案 1 :(得分:0)
您可以在阅读文件时计算单词并将其存储在地图上。 假设文件中的最后一个单词是“-1”并且一行中只有一个单词,即使单词是“生日快乐”,我也会这样做:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
public class StackOverflow {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, Integer> countedWords = new HashMap<String, Integer>();
int numberOfWords = 0;
String word = "";
while (true) {
word = scanner.nextLine();
if (word.equalsIgnoreCase("-1")) {
break;
}
if (countedWords.containsKey(word)) {
numberOfWords = countedWords.get(word);
countedWords.put(word, ++numberOfWords);
} else {
countedWords.put(word, 1);
}
}
Iterator it = countedWords.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry)it.next();
System.out.println(pairs.getKey() + " = " + pairs.getValue());
}
}
}