Кто-нибудь пытался решить эту задачу с возвращением того же количества пробелов между словами, что и было при вводе строки?
String[] sSplit = s.split(" ");
       String sConcat = "";

       for (int i = 0; i < sSplit.length; i++){

           if (sSplit[i].length() >= 1) {
               sConcat = sConcat.concat(sSplit[i].substring(0, 1).toUpperCase() + sSplit[i].substring(1) + " ");
           }
       }
       System.out.println(sConcat);
В седьмой строке я просто добавляю по одному пробелу, а в 1 и 6 забываю о том, что их могло быть между словами несколько.