public class Novo3
{
public static void main (String args[])
{
String frase="Uma frase");
frase=frase.trim();
frase=frase+" ";
int x=0;
int cont=0;
while (frase.length()-1>=x) //AQUI EU NÃO ETENDO
{
int y=frase.indexOf (" ",x); //AQUI EU NÃO ETENDO
System.out.println (frase.substring (x,y+1));//AQUI EU NÃO ETENDO
x=frase.indexOf (" ",x)+1;//AQUI EU NÃO ETENDO
cont =cont+1;
}
System.out.println ("Foram digitadas " + cont + " palavras");
}
}
Alguém poderia me explicar como funciona? obrigado.
public class Novo3
{
public static void main (String args[])
{
String frase="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 string
frase=frase+" "; //Aqui ele vai adicionar 1 espaço no final da String frase
int x=0; //Criou a variável x que vai representar na lógica do programa a posição da String que está sendo analisada
int cont=0; //Uma variável contadora apenas para somar a quantidade de palavras da String
while (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
{
int y=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 encontrado
x=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 palavra
separada 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 console
e somando a quantidade de palavras encontradas.
*/
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.
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.
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:
public static void main(String[] args) {
String frase="Uma frase";
String[] palavras =frase.trim().split(" "); //vetor de palavras
int qtdPalavras = palavras.length; //qtd de palavras
for(String x : palavras){ //iterando as palavras
System.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.