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 :?
importjava.io.*;classcontpalavra{publicstaticvoidmain(Stringargs[]){intpalavra=0;Stringfrase=" ";DataInputStreamdado;try{System.out.println("Digite uma frase:");dado=newDataInputStream(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(Exceptiona){System.out.println("erro");}}}
Como o método charAt(int) retorna um carácter, você não poderá utilizar uma comparação com aspas duplas ".
Deveria ser:
if(frase.charAt(0)=='C'){
}
Tchauzin!
S
sliverfrf
Tenta com o split
System.out.println(“O numero de palavras é: " + frase.split(” ").length);
lina
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!
pvrsouza
Perfeito Lina.
Mas quando ele falou frase, pensei numa cadeia de palavras que acaba com o ponto(.).
POr isso indiquei o split.
RSrsrs
1
100neurose
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
classcontpalavra{publicstaticvoidmain(Stringargs[]){intpalavra=0;Strings=" ",frase;DataInputStreamdado;try{System.out.println("Digite uma frase:");dado=newDataInputStream(System.in);s=dado.readLine();frase=s;for(inti=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(Exceptiona){System.out.println("erro");}}}
O
ono.leo1 like
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:
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){intcontadorDePalavras=0;Stringfrase="ola, como vai voce ? Legal!!! Voce pode usar isto: regex. ";Scannersc=newScanner(frase);sc.useDelimiter("[,;:.!? ]");while(sc.hasNext()){StringproximaPalavra=sc.next();if(proximaPalavra.length()>0)contadorDePalavras++;// System.out.println("[" + proximaPalavra + "]");}System.out.println("Foi(ram) econtrada(s) "+contadorDePalavras+" palavras.");}}