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:
Scannersc=newScanner(System.in);System.out.println("Quantas frases deseja digitar: ");intnum=sc.nextInt();for(inti=0;i<num;i++){System.out.println("");System.out.println("Digite a frase: ");Stringfrase=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…
...Stringfrase=sc.nextLine();String[]palavras=frase.split(" ");System.out.print("Quantidade de caracteres por palavra: ");for(intj=0;j<palavras.length;j++){System.out.print(palavras[j].length()+" ");}System.out.println();...
T
ThalesHNRQ
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 ?
R
rodevops
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…
intnum=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…
intnum=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!