import java.util.HashMap;
import java.util.Iterator;
class L6ex1pt2 {
String line = "When I was there, it was there"; //works for Strings with all unique words
//but not for Strings with repeated words (like this)
public static void main(String[] args) {
L6ex1pt2 test = new L6ex1pt2();
HashMap<String, Integer> hash = new HashMap<String, Integer>();
hash = test.countWords(test.line);
}
public String[] words(String s) {
String[] words = s.split("\\s+");
return words;
}
public HashMap<String, Integer> countWords(String s) {
HashMap<String, Integer> wordCount = new HashMap<String, Integer>();
String[] werds = words(s);
for (String w: werds) {
if (wordCount.containsKey(w)) {
wordCount.put(w, wordCount.get(s)+1);
} else {
wordCount.put(w, 1);
}
}
return wordCount;
}
}
Throws this exception:
Exception in thread "main" java.lang.NullPointerException at L6ex1pt2.countWords(L6ex1pt2.java:24) at L6ex1pt2.main(L6ex1pt2.java:10)
Line 25
wordCount.put(w, wordCount.get(s)+1);
should be
wordCount.put(w, wordCount.get(w)+1);
Since s contains the whole string and not the word you expect for the hashmap key.