Preciso informar a quantidade de textos a ingressar e contar a quantidade de caracteres de cada palavra em uma string e separar por espaço.
Exemplo:
Entrada:
Ola tudo bem
e ai como foi seu dia
Saida:
3 4 3
1 2 4 3 3 3
Consegui contar somente o tamanho de tudo:
Scanner sc = new Scanner(System.in);
System.out.println("Quantas frases deseja digitar: ");
int num = sc.nextInt();
for (int i = 0; i < num; i++)
{
System.out.println("");
System.out.println("Digite a frase: ");
String frase = sc.nextLine();
System.out.println("Quantidade de caracteres por palavra: " + frase.length());
}
Na verdade o texto deveria muda-lo para Quantidade de caracteres (incluindo espaços) por frase, mas enfim…
Já sabe usar arrays?
Dentro do for, use o método split indicando o espaço como delimitador/separador…
...
String frase = sc.nextLine();
String[] palavras = frase.split(" ");
System.out.print("Quantidade de caracteres por palavra: ");
for (int j = 0; j < palavras.length; j++) {
System.out.print(palavras[j].length() + " ");
}
System.out.println();
...
1 curtida
Entendi, funcionou, muito obrigado. Mas ao entrar no primeiro for ele pega a primeira frase como zero e só a partir da segunda consigo digitar o que realmente quero, caso eu digite que quero apenas uma frase a resposta é zero e finaliza sem ter digitado nada, sabe qual seria o problema ?
Isso acontece por causa do sc.nextInt()… o java tem um bug nesse método, quando você digita um número fica um buffer (pesquise mais a respeito) justamente com um \n (caractere de nova linha) armazenado no buffer, quando se usa outro método o java “puxa” do buffer antes de pedir do usuário, um jeito de corrigir isso pode ser assim…
int num = sc.nextInt();
sc.nexLine();
...
Isso é gambiarra, mas funciona
, com isso o buffer usa o \n nesse nextLine “vazio”, os próximos serão chamados corretamente. O jeito formal e “elegante” de corrigir isso também pode ser assim…
int num = Integer.paserInt(sc.nextLine());
...
Isso já ignora o buffer e armazena o int convertido pelo método… vai pesquisando é assim que se aprende e bons estudos!