Your definition of sentence end is not correct. A sentence doesn't necessarily end in a dot (or question mark, exclamation mark, etc). You could regard the end of a sentence a dot, question mark or exclamation mark but only if it is followed by whitespace (space, enter, tab, etc) or nothing at all (end of
String). This is the approach that Javadoc also uses.
That's still flawed however, as the sentence would end with U.S.A. even if there's something after it. Javadoc also has this problem; I've seen several Javadoc comments in the summary list end with "i.e.". We need to redefine what a sentence end is. You can expand the previous definition to include that the next word should start with an uppercase letter. However, that will still be incorrect if you have a name or something other with an uppercase letter after an acronym. It becomes evident that full sentence recognition is still not trivial (or even possible?) to do from code.