Olá, Bernardo. Como vai?
O seu diagnóstico foi cirúrgico e a sua correção está impecável! Você identificou um dos conceitos mais importantes e que mais geram dores de cabeça no início do desenvolvimento de software: o escopo de variáveis.
Como você bem pontuou, se uma variável for declarada dentro das chaves {} de um bloco condicional (if ou else), ela nasce e morre ali dentro. O método System.out.println que estava do lado de fora não conseguiria enxergá-la, resultando em um erro de compilação (Cannot resolve symbol).
Ao mover as declarações de idade e mensagem para o escopo do método main, você garantiu que todo o bloco de código abaixo delas tivesse acesso para ler e modificar os seus valores.
Para agregar ainda mais valor aos seus estudos e à sua atuação como Gerente de Orçamento e Finanças — onde a lógica limpa e estruturada é crucial —, vale a pena conhecer uma alternativa muito elegante para reescrever esse mesmo bloco if/else.
Em Java, quando queremos atribuir um valor a uma variável com base em uma condição simples de duas vias, podemos utilizar o Operador Ternário (?:). Ele permite resolver toda essa estrutura em apenas uma única linha de código, mantendo o escopo perfeitamente correto.
Veja como o seu código ficaria aplicando essa boa prática de mercado:
public class Principal {
public static void main(String[] args) {
int idade = 17;
// O operador ternário avalia a condição antes da '?'.
// Se for verdadeira, atribui o primeiro texto; se for falsa (após os ':'), atribui o segundo.
String mensagem = (idade >= 18) ? "Você é maior de idade." : "Você é menor de idade.";
System.out.println(mensagem);
}
}
O que muda com essa estrutura?
- Código mais limpo e conciso: Você reduz o número de linhas e chaves no seu programa.
- Imutabilidade e Segurança: Você declara e já inicializa a variável
mensagem com o valor definitivo de forma direta, eliminando a necessidade de iniciar com uma string vazia "" para só depois alterá-la.
Parabéns pelo excelente domínio sobre o ciclo de vida das variáveis e pela precisão na correção do exercício!
Espero que possa ter lhe ajudado!