Fácil Java

Inverter string com StringBuilder

Enunciado

Escreva um programa que leia uma palavra e imprima a palavra invertida usando StringBuilder. Depois imprima também a palavra original para provar que ela não foi alterada.

Requisitos

  • Usar StringBuilder para inverter.
  • Imprimir a palavra invertida.
  • Imprimir a palavra original inalterada.

Código inicial

import java.util.Scanner;

public class InverteString {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String palavra = sc.nextLine();
        // Seu código aqui
    }
}

Saída esperada

Original: Java
Invertida: avaJ
Ver dica

StringBuilder tem o método reverse(). Lembre-se de que String é imutável, então a original não muda.

Mostrar solução
import java.util.Scanner;

public class InverteString {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String palavra = sc.nextLine();

        // Cria um StringBuilder a partir da palavra
        StringBuilder sb = new StringBuilder(palavra);
        sb.reverse(); // inverte no próprio buffer

        System.out.println("Original: " + palavra);
        System.out.println("Invertida: " + sb.toString());
    }
}

Passo a passo

  1. Importamos Scanner para ler a entrada do usuário.
  2. Lemos a palavra com sc.nextLine() e guardamos em palavra.
  3. Criamos um StringBuilder passando a palavra no construtor; isso copia o conteúdo para um buffer mutável.
  4. Chamamos sb.reverse(), que inverte os caracteres dentro do próprio StringBuilder.
  5. Imprimimos a palavra original, que permanece intacta.
  6. Imprimimos o resultado convertido para String com sb.toString().

Por que funciona

String é imutável, então palavra nunca é alterada. O StringBuilder é mutável e oferece reverse() para inverter os caracteres in-place. Assim, conseguimos a versão invertida sem criar várias strings intermediárias.

Erros comuns

  • Tentar inverter com palavra.reverse(): String não tem esse método; ocorre erro de compilação. Use StringBuilder.
  • Esquecer toString() ao imprimir: System.out.println(sb) funciona porque println chama toString(), mas em concatenação explícita é bom converter.
  • Usar == para comparar strings: sempre use equals() para comparar conteúdo.

Outra forma de resolver

Percorrer a string de trás para frente com um laço e concatenar em um StringBuilder:

StringBuilder sb = new StringBuilder();
for (int i = palavra.length() - 1; i >= 0; i--) {
    sb.append(palavra.charAt(i));
}

Essa abordagem é preferível se você precisar de alguma transformação a cada caractere.

Saída esperada

Original: Java
Invertida: avaJ