Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Dúvida na lógica de código

Olá. Estava treinando um pouco de If e Else com um código de idade e votação. Fiz o código no IntelliJ e na linha 13 o programa me diz que a condição >= 16 sempre será verdadeira. Como poderia arrumar isso?

import java.util.Scanner;

public class Voto {

public static void main(String[] args) {
    Scanner teclado = new Scanner(System.in);
    System.out.print("Qual seu ano de nascimento? ");
    int nasc = teclado.nextInt();
    int idade = 2023 - nasc;

    if (idade < 16) {
        System.out.println("Voto proibido");
    } else if ((idade >= 16 && idade < 18) || (idade > 70)) {
        System.out.println("Voto opcional");
    } else {
        System.out.println("Voto obrigatório");
    }
}

}

1 resposta
solução!

Oi Guilherme, tudo bem?

O problema na linha 13 está na condição (idade >= 16 && idade < 18) || (idade > 70). Quando a idade é maior ou igual a 16, ela entra nesse bloco e não verifica a segunda parte da condição. Para corrigir, você pode reorganizar as condições assim:

if (idade < 16) {
    System.out.println("Voto proibido");
} else if (idade >= 16 && idade < 18) {
    System.out.println("Voto opcional");
} else if (idade >= 70) {
    System.out.println("Voto opcional");
} else {
    System.out.println("Voto obrigatório");
}

Dessa forma, as condições são avaliadas de forma mais precisa, garantindo que a idade entre 16 e 18 seja tratada corretamente.

Espero que te ajude a entender melhor.

Um abraço e bons estudos.