Como faço para contar o número de palavras em uma string?

Eu preciso contar o número de palavras e estou assumindo que a maneira correta de fazer isso é calcular o número de vezes que o caractere anterior em uma string não é uma letra (ou seja, outros caracteres) porque isso é supor que haveria dois pontos, espaços, tabulações e outros sinais na cadeia. Então, no começo, minha ideia era percorrer cada personagem e contar quantas vezes você não receberia uma letra de um 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++;
       }
     }
   }

No entanto, sempre vou ter uma matriz fora dos limites por causa disso. Então, eu meio que preciso de uma pequena ajuda ou de outra maneira que possa ser mais eficiente. Pensei em usar Matches para apenas [a-zA-z], mas não sei como lidar com um char para ser comparável a uma string contando quantas vezes isso ocorre.

Obrigado

questionAnswers(7)

yourAnswerToTheQuestion