Я настоятельно рекомендую вам использовать Java String API в полной мере. Например, рассмотрим String.split (регулярное выражение String):
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String%29
Это принимает строку и регулярное выражение, а затем возвращает массив всех подстрок, используя ваше регулярное выражение в качестве разделителя. Если вы сделаете свое регулярное выражение совпадающим со всеми согласными или пробелами, то в итоге вы получите массив строк, которые либо пусты (и, следовательно, не представляют согласную), либо последовательность гласных (которые представляют согласную). Прикинь последнее, и у тебя будет решение.
Другой альтернативой, которая также использует преимущества API-интерфейса String и регулярных выражений, является replaceAll:
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceAll%28java.lang.String,%20java.lang.String%29
В этом случае вам нужно регулярное выражение, которое принимает форму [необязательно что-нибудь, что не является гласной] [один или более гласных] [необязательно что-нибудь, что не является гласной]. Запустите это регулярное выражение для вашей строки и замените его одним символом (например, «1»). Конечным результатом является то, что каждый слог будет заменен одним символом. Тогда все, что вам нужно сделать, это String.length (), и вы узнаете, сколько слогов у вас было.
В зависимости от требований вашего решения они могут не работать. Если это домашний вопрос, связанный с разработкой алгоритма, то это почти наверняка не самый предпочтительный ответ, но он имеет преимущество в том, что он лаконичен и хорошо использует встроенные (и, следовательно, высоко оптимизированные) Java API.