publicclassNovo3{publicstaticvoidmain(Stringargs[]){Stringfrase="Uma frase");frase=frase.trim();frase=frase+" ";intx=0;intcont=0;while(frase.length()-1>=x)//AQUI EU NÃO ETENDO{inty=frase.indexOf(" ",x);//AQUI EU NÃO ETENDOSystem.out.println(frase.substring(x,y+1));//AQUI EU NÃO ETENDOx=frase.indexOf(" ",x)+1;//AQUI EU NÃO ETENDOcont=cont+1;}System.out.println("Foram digitadas "+cont+" palavras");}}
Alguém poderia me explicar como funciona? obrigado.
publicclassNovo3{publicstaticvoidmain(Stringargs[]){Stringfrase="Uma frase");// Aqui tem um erro nao pode existir esse ) frase=frase.trim();//Aqui aqui ele tira os espaços que existe antes e depois da stringfrase=frase+" ";//Aqui ele vai adicionar 1 espaço no final da String fraseintx=0;//Criou a variável x que vai representar na lógica do programa a posição da String que está sendo analisadaintcont=0;//Uma variável contadora apenas para somar a quantidade de palavras da Stringwhile(frase.length()-1>=x)//Aqui foi criado um laço de repetição enquanto o tamanho da String frase-1 for maior ou igual a variável x{inty=frase.indexOf(" ",x);//Aqui ele cria uma variável y e coloca nela a posição do espaço x encontrado na String ou seja o espaço 0, 0 e o valor de x no momento exemplo: "Uma frase aqui" o espaço zero seria entre "Uma frase"System.out.println(frase.substring(x,y+1));//Aqui ele mostra no console um pedaço da String frase retirado a partir do carácter x até o carácter y+1 , no exemplo anterior o y recebeu o valor do index do primeiro espaço encontradox=frase.indexOf(" ",x)+1;//Agora ele coloca do x a posição do primeiro espaço encontrado na String frase +1 cont=cont+1;// soma +1 no contador de palavras}System.out.println("Foram digitadas "+cont+" palavras");//Mostra no console a quantidade de palavras encontradas}}/*O programa ele analisa uma frase e encontra a posição do primeiro espaço e separa a frase a partir daquele primeiro espaço e mostra a primeira palavraseparada e soma a quantidade de palavras, e faz isso enquanto ele encontrar espaços e mais palavras , e vai separando a String por palavras mostrando no consolee somando a quantidade de palavras encontradas.*/
A
acsd
Valeu!
Vai me ajudar muito essa explicação!
valeu mesmo!
lucasportela
Poderia usar o método split(String regex) para contar a quantidade de palavras.
frase.split(" ").length
A
acsd
Vou testar isso também. Sou bem iniciante! xD
[quote=lucasportela]Poderia usar o método split(String regex) para contar a quantidade de palavras.
frase.split(" ").length
carlinbh
Realmente poderia ter usado, mais é bom construir trechos de programas assim pra exercitar a mente,
por que mesmo não sabendo todo o poder da biblioteca java, ainda sim podemos fazer tudo com a lógica.
Ou quase tudo.
lucasportela
Concordo plenamente, mas também tem que conhecer o que já existe para não perder tempo reinventando a roda.
Com a lógica TUDO é possível. O que pensamos ser impossível é porque ainda não encontramos as ferramentas certas para achar a resposta, tudo é questão de tempo.
ribclauport
Acredito que com lógica da para fazer tudo, mas as ferramentas são para ser usadas em tipos de situações adequadas, o código da forma que foi feito, parece que está usando as ferramentas não adequadas para o caso, acredito que deve-se usar mesmo split, e o length…
Eu usaria algo assim:
publicstaticvoidmain(String[]args){Stringfrase="Uma frase";String[]palavras=frase.trim().split(" ");//vetor de palavrasintqtdPalavras=palavras.length;//qtd de palavrasfor(Stringx:palavras){//iterando as palavrasSystem.out.println(x);//exibindo no console}System.out.println("Foram digitadas "+qtdPalavras+" palavras");//mostrando quantidade}
Acredito que fica mais fácil para ler, e quando programamos, devemos saber que outras pessoas podem dar manutenção e nosso código, eu qanto mais “limpo” melhor.