Os dejo una forma de contar palabras de una frase. Se supone que se escribe correctamente (con espacios después del punto y esas cosas)
package contarpalabras;
import java.util.Scanner;
public class ContarPalabras {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Introduzca una frase");
Scanner sc = new Scanner(System.in);
String frase = sc.nextLine();
//Con esto elimino los espacios en blanco que pueda haber al principio y final de la frase
frase = frase.trim();
//al menos habrá una palabra en mi frase
int contadorPalabras = 1;
//compruebo que la frase no sean todo espacios en blanco
boolean ControlLetras = false;
//Con cada espacio en blanco he acabado una palabra
for (int i = 0; i < frase.length(); i++) {
char letraActual = frase.charAt(i);
if (letraActual == ' ') {
contadorPalabras++;
}
if(letraActual != ' '){
ControlLetras =true;
}
}
if(ControlLetras ==false){
System.out.println("Error, la frase es todo espacios");
}
else{
System.out.println("La frase tiene " + contadorPalabras + " palabras");
}
}
}