No, non è che "manca un for". È proprio tutto sbagliato e insensato.
Intanto già qui:
String[] frase = tastiera.nextLine();
è sbagliato. nextLine() ti dà 1 String (NON un array di String) con la "linea" inserita dall'utente (che potrebbe contenere più parole, ovviamente).
Ma la vera questione però è un'altra, quello che ti viene richiesto è:
a) Data una singola stringa (es. dal nextLine() ), spezzarla per estrarre le singole parole e poi fare quel conteggio?
oppure
b) Ottenere già da Scanner più parole singole (in un ciclo ovviamente) e su queste fare quel conteggio?