Exibir sentença de forma invertida - Java

me ajudem, não estou conseguindo fazer as palavras serem exibidas de forma invertida.

package questao13;

import java.util.StringTokenizer;
import java.util.Scanner;

public class SepPalavras {

public static void main(String[] args) {
	Scanner scanner = new Scanner(System.in); 
	
	System.out.print("Digite a frase desejada: ");
	String sentenca = scanner.nextLine(); // Terá uma entrada de sentença de texto.
	
	// Será iniciado o separador de sentença, usando-se como delimitador o símbolo de espaço.
	StringTokenizer separador = new StringTokenizer(sentenca);
	
	System.out.println("--------------------------------------------------------------------");
    System.out.println("| Sentença de forma invertida (da última para a primeira palavra): |");
    System.out.println("--------------------------------------------------------------------");
    
	// Haverá interação entre as palavras separadas por símbolos de pontuação (tokens).
	for (int i = 1; separador.hasMoreTokens(); i++) {
		System.out.println("Palavra " + i + ": " + separador.nextToken());
	
	}
	
	scanner.close();
}

}

O seu for está começando da primeira posição e “caminhando” até a última, com isso, as palavras serão impressas na ordem em que estão no array (ou seja, do mesmo jeito em que a frase foi informada).

Para imprimir invertido, comece o for da última posição - 1, e vá decrementando até a primeira posição:

E para essa atividade, acho que usar o método split da classe String ficará mais fácil do que o uso de StringTokenizer:

public class Main {
	
	public static void main(String[] args) throws Exception {
		String nome = "Essa é uma frase qualquer para testar o código";
		String[] palavras = nome.split(" ");
		
		for (int i = palavras.length - 1; i >= 0; i--) {
			System.out.println(palavras[i]);
		}
	}
}

A saída é:

código
o
testar
para
qualquer
frase
uma
é
Essa
1 curtida

Desculpa n ter especificado no tópico, mas o professor pediu pra usar a StringTokenizer ;-;

Faz com split e envia isto para o teu professor:
StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.” - https://docs.oracle.com/javase/8/docs/api/java/util/StringTokenizer.html

Mais um professor que parou no Java 1.4 e continua a ensinar APIs obsoletas e complicadas… Felizmente há excepções

2 curtidas