Вот другой способ взглянуть на это, и это простой однострочный:
int spaces = s.replaceAll("[^ ]", "").length();
Это работает, эффективно удаляя все не пробелы, затем беря длину того, что осталось (пробелы).
Возможно, вы захотите добавить нулевую проверку:
int spaces = s == null ? 0 : s.replaceAll("[^ ]", "").length();
Обновление Java 8
Вы также можете использовать поток:
int spaces = s.chars().filter(c -> c == (int)' ').count();