Frase.length()-1>=x?

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.

*/

Valeu!

Vai me ajudar muito essa explicação!

valeu mesmo!

Poderia usar o método split(String regex) para contar a quantidade de palavras.

frase.split(" ").length

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

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.