Contar palavras numa frase e imprimir quantidade!

Iae pessoal blz,

seguinte…to tentando fazer um programa que leia uma frase, conte quantas palavras tem nela e imprima a quantidade.

problema é que ta dando uns erros ae e como sou iniciante em java eu nao faço nem ideia do que sejaa :?

import java.io.*;

class contpalavra
 {
   public static void main(String args[])
     {
	    int palavra = 0;
        String frase = " ";
        DataInputStream dado;
		
		try
		  {
		    System.out.println("Digite uma frase:");
			dado = new DataInputStream(System.in);
			frase = dado.readLine();

	                 if ((frase.charAt() == " " ) && (frase.charAt() == "."))
			    { 
			      palavra = palavra + 1;
			      System.out.println("O numero de palavras é:" + palavra);
				}
			   else 
			   { 
			     System.out.println("Termine a frase");
			   }
		    }			
	      }
	     catch (Exception a)
          {
            System.out.println("erro");
		  }
      }
 }

alguem pode dar um help ae?

Já tentou split()??

Splita por espaço e conta as posições do vetor que ele retorna.

:wink:

Tb sou iniciante…mas de repente…

Pequeno exemplo:

public static void main(String[] args) { String frase = "era uma vez, um programador"; String[] palavras = frase.split(" "); System.out.print(palavras.length); }

[]'s
JL

Seu programa não compila - entre outras coisas, troque

if ((frase.charAt() == " " ) && (frase.charAt() == "."))

por

if ((frase.charAt() == ' ' ) && (frase.charAt() == '.'))

(Olhe a sutileza - é uma aspa simples, não dupla, que você deve usar para definir constantes do tipo char.

Oi,

Você está utilizando alguma IDE?

Bom, meu conselho é para você olhar o javadoc. Note que o método charAt() da classe String requer um parâmetro do tipo inteiro.

Então, se você tem uma frase do tipo:

frase = "Como utilizar o método charAt() ?";

E for utilizar o método charAt(), deverá ser feito:

frase.charAt(0); // Retornará o valor 'C' da frase escolhida.

Syntax: charAt(int posicao); Returns: the char value at the specified index of this string. The first char value is at index 0.

Outra observação:

Como o método charAt(int) retorna um carácter, você não poderá utilizar uma comparação com aspas duplas ".

Deveria ser:

[code]if (frase.charAt(0) == ‘C’) {

}[/code]

Tchauzin!

Tenta com o split

System.out.println(“O numero de palavras é: " + frase.split(” ").length);

Oi,

O problema de utilizar split é se existir um ‘artigo’ ou qualquer pontuação.

Ex: Como utilizar o método ?

Se você utilizar split irá contar 5 palavras. Sendo que isso não é verdade.

Tchauzin!

Perfeito Lina.
Mas quando ele falou frase, pensei numa cadeia de palavras que acaba com o ponto(.).

POr isso indiquei o split.

RSrsrs

ae pessoal vlw ae pela ajuda!

graças a lina eu entendi direito como q se usa o charAt() hehe

agora o programa ta do jeito q eu queria, o problema é que pra ele contar a ultima palavra precisa colocar ponto no final da frase…mas td bem :smiley:

class contpalavra
 {
   public static void main(String args[])
     {
	    int palavra = 0;
        String s = " ", frase;
        DataInputStream dado;
		
		try
		  {
		    System.out.println("Digite uma frase:");
			dado = new DataInputStream(System.in);
			s = dado.readLine();
			frase = s;
	     
		  for (int i = 0; i < frase.length(); i++)
		   {
		     if (frase.charAt(i) == ' ')
			    { 
			      palavra += 1;
			      
				}
			 if (frase.charAt(i) == '.')
                {
                   palavra += 1;
			      
				  break;
                }				
             else
			   {
			      continue;
			   }	
			}
		   System.out.println("Numero de palavras: " + palavra);
	      }
	     catch (Exception a)
          {
            System.out.println("erro");
		  }
      }
 }

Opa, acredito que a idéia do split() seja realmente muito boa. Só tentando complementar mais um pouco, esse metodo split aceita como argumento regex. Seria interessante tentar aproveitá-lo para separar as palavras com frase mais complexas, por exemplo, quando se tem outras pontuacoes alem do ponto final.

Abaixo um pequeno codigo de exemplo utilizando-se Scanner e regex:

[code]import java.util.Scanner;

public class Teste {
public static void main(String[] args) {
int contadorDePalavras = 0;
String frase = "ola, como vai voce ? Legal!!! Voce pode usar isto: regex. ";

	Scanner sc = new Scanner(frase);
	sc.useDelimiter("[,;:.!? ]");
	while (sc.hasNext()) {
		String proximaPalavra = sc.next();
		if (proximaPalavra.length() > 0) contadorDePalavras++;
		// System.out.println("[" + proximaPalavra + "]");
	}
	System.out.println("Foi(ram) econtrada(s) " + contadorDePalavras + " palavras.");	
}

}[/code]

Espero que tenha complementado com algo.

1 curtida