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.
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.
lina
Fevereiro 3, 2010, 4:55pm
#5
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);
lina
Fevereiro 3, 2010, 5:00pm
#7
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
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");
}
}
}
ono.leo
Fevereiro 3, 2010, 10:58pm
#10
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