The constructor is like the one you commented out.
countOccurrences computes a count by scanning 'data' for 'word'.
What is a 'stem'?
No need for a main().
Oh okay, so it's supposed to be like this?
-But then why are there two "String data" for? One with private and one in constructor?
-For getStems if you created the class with the following data: “This”, “Data”, “Long” and then passed in a value of 3 for len it should return: “Thi”, “Dat”, “Lon” as an array of Strings. If instead I passed in a value for 5 for len it should return: “This”, “Data”, “Long”
-I only added main for whenever I do a quick test
The order that methods appear in source doesn't really have to match the order they appear in the UML diagram. On the other hand, there's no harm in matching the order either but I wouldn't take any points off for not matching the order. That would be silly, in my opinion.
can be written as
Most importantly, keep display separate from other concerns. In both countOccurrences() and getStems() you have calls to StdOut.println(). The names of these methods do not suggest that they should be doing any kind of display to the console. They should only be doing what they claim to do, which is to count occurrences of a word and return the "stems" as a String array. Display of those results should be done elsewhere in the program. This will keep your methods focused on doing only one thing and doing it well.
The calls to StdOut.println() can be moved to the main() method or in the case of the display logic in getStems(), to a different method whose job is only to display the strings in data.
getStems() will overwrite the data array field. I'm guessing that what is really needed is that a new String is allocated and the stems are put in there and then the new array is returned, thus leaving the original 'data' array intact.