1
resposta

Resolvi de uma maneira diferente mas expliquei os escopos de variáveis

import java.util.Scanner;

public class VerificaAIdade {
    public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);

        System.out.println("Digite sua idade:");
        int idade = scanner.nextInt();

        if ( idade >= 18) {
            System.out.println("Você é maior de idade.");
        } else if ( idade < 18) {
            System.out.println("Você é menor de idade.");
        } else {
            System.out.println("número inválido.");
        }
        scanner.close();
    }
}

// CORREÇÃO DO CÓDIGO & ESCOPO DE VARIÁVEL
// public class Main {
//    public static void main(String[] args) {
//        if (idade >= 18) {
//            int idade = 17; // escopo de variável também
//            String mensagem = "Você é maior de idade.";
//        } else {
//            String mensagem = "Você é menor de idade.";
//        }
//
//        System.out.println(mensagem); //O erro também está aqui pois a variável "mensagem" só existe dentro do if e else, para que funcione temos que decretar essa string fora das condicionais.
//    }
//}


// DESSA MANEIRA
//public class Main {
//    public static void main(String[] args) {
//       String mensagem1 = "Você é maior de idade.";
//       String mensagem2 = "Você é menor de idade.";
//       int idade = 17;
//        if (idade >= 18) {
//            System.out.println(mensagem1);
//        } else {
//           System.out.println(mensagem2);
//        }
//    }
//}
1 resposta

Oi, Pedro! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Muito interessante a forma como você não só resolveu o problema, mas também explicou o escopo de variáveis. Isso mostra um entendimento além do básico, principalmente ao identificar que a variável mensagem não pode ser acessada fora do if/else. Esse tipo de atenção faz bastante diferença na evolução.

Uma dica interessante para o futuro é usar o operador ternário para simplificar decisões simples como essa:


int idade = 17;
String mensagem = idade >= 18 ? "Maior de idade" : "Menor de idade";
System.out.println(mensagem);

Esse código define a mensagem em uma única linha com base na condição, deixando o código mais enxuto e fácil de ler.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!