Como inverter palavras com JAVA?

Por exemplo a frase “Agora vamos fazer” para ficar “oraAg mosva zerfa”.

 String [] words = line.split(" ");
		  	String reversedString = "";
		  	
		  	for (int i = 0; i < words.length; i++) {
		        String word = words[i];
		          String reverseWord = "";
		          for (int j = word.length()-1; j >= 0; j--){
		    		      reverseWord +=  word.charAt(j);
		    	    }
		    	    reversedString += reverseWord + " ";
		  	}
		        System.out.println(reversedString);		

Mas com este programa fica "arogA somav rezaf ".

Qual é a regra para inverter?

Primeiro eu tinha entendido que era pra inverter as sílabas, mas se fosse isso mesmo, a primeira palavra ficaria “ragoA”, pode confirmar?

Se for pra inverter sílabas, é complicado porque você teria que analisar cada palavra segundo as regras da língua portuguesa: http://www.algosobre.com.br/portugues/separacao-silabica.html

Se for outro critério, poderia explicar? Parece - e isso é um grande chute - que é pra pegar os 3 últimos caracteres e depois os 2 primeiros (e só com substring daria pra resolver), mas aí só funcionaria para palavras de 5 letras. Se o critério for esse mesmo, faltou definir como seria para uma quantidade de caracteres diferente de 5.

Enfim, desculpe se pareço estar sendo muito chato, mas definir bem o problema é o primeiro passo para ter uma solução correta :slight_smile:

Não faz mal, vou tentar explicar… então o que é suposto o programa fazer é inverter a palavra pelo seu centro, por ex: Agora não fica arogA porque assim é inverter do inicio para o final, mas queremos inverter por 2 partes(quando é dividida pelo meio) então fica ora + Ag.
E o programa é só para palavras acima dos 3 carateres.

Então é só pegar o tamanho da palavra e dividir por 2 para achar o meio. Depois use substring para pegar os pedaços da string antes e depois do meio:

String word = "Agora";
int pos = word.length() / 2;
String reversed = word.substring(pos) + word.substring(0, pos);
1 curtida

ok já percebi obrigado!!!