¿Cómo cuento el número de palabras en una cadena?

Necesito contar el número de palabras y asumo que la forma correcta de hacerlo es calculando el número de veces que el carácter anterior en una cadena no es una letra (es decir, otros caracteres) porque esto es para asumir que habría dos puntos, espacios, tabulaciones y otros signos en la cadena. Entonces, al principio, mi idea fue recorrer cada personaje y contar cuántas veces no obtendrías una letra de un alfabeto.

    for(int i = 0; i < string.length(); i++) {
      for(int j = 0; i < alphabets.length(); j++) {
       if (string.charAt(i-1) == alphabets.charAt(j)) {
           counter++;
       }
     }
   }

Sin embargo, siempre tendré una matriz fuera de límites debido a esto. Por lo tanto, necesito un poco de ayuda u otra forma que pueda ser más eficiente. Pensé en usar Coincidencias solo para [a-zA-z] pero no estoy seguro de cómo manejar un char para que sea comparable a una cadena al contar cuántas veces ocurre.

Gracias

Respuestas a la pregunta(7)

Su respuesta a la pregunta