Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução

package com.github.lucasdevrj.validacaodelogin;

import java.util.Scanner;

public class Sistema {

    private String login = "aluno";
    private String senha = "alura";
    private int tentativas = 3;

    public void validarSenha() {
        Scanner entrada = new Scanner(System.in);
        do {
            System.out.print("Digite o login: ");
            String loginDigitado = entrada.nextLine();

            System.out.print("Digite a senha: ");
            String senhaDigitada = entrada.nextLine();

            tentativas--;

            boolean loginValido = loginDigitado.equals(login) && senhaDigitada.equals(senha);
            if (loginValido) {
                System.out.println("Login bem-sucedido!");
                break;
            }
            String resposta = tentativas > 0 ?
                    "Senha incorreta. Tentativas restantes: " + tentativas :
                    "Senha incorreta. Não te restam mais tentativas.";
            System.out.println(resposta);
        } while (tentativas > 0);
        entrada.close();
    }
}
/**
 * Imagine que você está desenvolvendo um sistema de acesso para um laboratório de informática da escola.
 * Os estudantes precisam autenticar-se com suas credenciais pessoais, mas o sistema deve proteger contra
 * tentativas de adivinhação de senhas.
 *
 * Crie uma classe que:
 *
 * Armazene o login e a senha de forma encapsulada.
 * Um método validarSenha() que receba as credenciais digitadas e retorne se o login foi bem-sucedido.
 * Uma lógica no arquivo principal que utilize a classe Scanner para ler o login e senha digitados,
 * controlando as tentativas com um loop.
 * Bloqueie o acesso após 3 falhas consecutivas.
 * Exiba mensagens informando o resultado da tentativa e quantas restam.
 * Exemplo de entrada:
 *
 *
 * Login: aluno2025
 * Senha correta: escola@123
 * Tentativas: "senhaerrada", "123456", "escola@123"
 *
 * Saída esperada:
 *
 * Senha incorreta. Tentativas restantes: 2
 * Senha incorreta. Tentativas restantes: 1
 * Login bem-sucedido!
 */

package com.github.lucasdevrj.validacaodelogin;

public class Principal {
    public static void main(String[] args) {
        Sistema sistema = new Sistema();
        sistema.validarSenha();
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
beleza?

1 resposta

Olá, Lucas! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou o encapsulamento para proteger credenciais com Java, utilizou muito bem o Scanner para capturar entradas e ainda compreendeu a importância do loop de tentativas para controlar acessos.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Encapsulamento: manter atributos privados e fornecer métodos de acesso controlados.
  • Tratamento de exceções: garantir robustez ao lidar com entradas inválidas.
  • Boas mensagens de feedback: melhorar a experiência do usuário durante a autenticação.

Ah, uma pergunta: Você acha mais interessante reforçar a segurança com bloqueio após tentativas falhas ou permitir redefinição de senha imediata para facilitar o acesso dos alunos?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!