Inspired by this thread, here is a simple solution. Buggy, since it replaces separating whitespaces with only one, and assumes that whitespaces are the only separators between words, but neat enough.

public class UpperFirst {
    public static void main(String[] args) {
        String test = "This is some  test text, indeed a test.";
        String[] words = test.split("[ ]+");

        StringBuffer buffer = new StringBuffer();
        for (String word : words) {
            buffer.append(Character.toUpperCase(word.charAt(0)));
            if (word.length() > 1) {
                buffer.append(word.substring(1).toLowerCase());
            }
            buffer.append(" ");
        }

        System.out.println(buffer);
    }
}

For a less “buggy” solution, I would more than likely go for regular expressions:

public class UpperFirstRegexp {
    public static void main(String[] args) {
        String test = "This is some  test text,indeed, a test.";
        java.util.regex.Pattern p = java.util.regex.Pattern.compile("(\\\\w+)");
        java.util.regex.Matcher m = p.matcher(test);
        StringBuffer sb = new StringBuffer();
        while (m.find()) {
            StringBuffer s = new StringBuffer();
            s.append(Character.toUpperCase(m.group(1).charAt(0)));
            if (m.group(1).length() > 1) {
                s.append(m.group(1).substring(1).toLowerCase());
            }
            m.appendReplacement(sb, s.toString());
        }
        m.appendTail(sb);
        System.out.println(sb.toString());
    }
}