public class StringWordCount { 
  
    public static int countWords(String s) { 
  
        int wordCount = 0; 
  
        boolean word = false; 
        int endOfLine = s.length() - 1; 
  
        for (int i = 0; i < s.length(); i++) { 
          
            // if the char is a letter, it's a word. 
            if (Character.isLetter(s.charAt(i)) && i != endOfLine) { 
                word = true; 
              
            // if char isn't a letter and there have been letters before, wordCount goes up. 
            } else if (!Character.isLetter(s.charAt(i)) && word) { 
                  
                // if not an apostrophe, count the word 
                if (s.charAt(i) != '\'') { 
                    wordCount++; 
                    word = false; 
                      
                // else if (an apostrophe) AND the letter before was an apostrophe, count the word 
                } else if (s.charAt(i-1) == '\'') { 
                    wordCount++; 
                    word = false; 
                } 
                  
            // last word of String; if it doesn't end with a non letter, it wouldn't count without this. 
            } else if (Character.isLetter(s.charAt(i)) && i == endOfLine) { 
                wordCount++; 
            } 
        } 
        return wordCount; 
    } 
}
DOWNLOAD

             Created: January 22, 2014
Completed in full by: Michael Yaworski