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

Não ficou da melhor forma possível, mas consegui.

/**
 * Carla está desenvolvendo um sistema de cadastro de usuários e precisa validar as senhas.
 * A senha deve ter pelo menos:
 *
 * 8 caracteres
 * Uma letra maiúscula
 * Uma letra minúscula
 * Um número
 * Um caractere especial
 *
 * Crie um programa que receba uma senha e exiba uma mensagem indicando se a senha é válida ou não.
 *
 * Exemplo de entrada:
 * Digite a senha: Senha123!
 *
 * Saída esperada:
 * A senha é válida.
 */

package com.github.lucasdevrj.exercicios.validandosenhascomregex;

import java.util.Scanner;

public class Validacao {

    private String senha;

    private String getSenha() {
        return senha;
    }

    private void setSenha(String senha) {
        this.senha = senha;
    }

    private String validarSenha() {
        boolean temOitoCaracteres = getSenha().length() >= 8;
        boolean temLetraMaiuscula = getSenha().matches(".*[A-Z].*");
        boolean temLetraMinuscula = getSenha().matches(".*[a-z].*");
        boolean temNumero = getSenha().matches(".*\\d.*");
        boolean temCaractereEspecial = getSenha().matches(".*[!@#$%^&*].*");

        if (temOitoCaracteres && temNumero && temLetraMaiuscula && temLetraMinuscula && temCaractereEspecial) {
            return "Senha válida.";
        }

        return "Senha inválida";
    }

    public void digitarSenha() {
        Scanner entrada = new Scanner(System.in);

        System.out.print("Digite a senha: ");
        setSenha(entrada.nextLine());

        entrada.close();

        System.out.println(validarSenha());
    }

}
package com.github.lucasdevrj.exercicios.validandosenhascomregex;

public class Principal {
    public static void main(String[] args) {
        Validacao validacao = new Validacao();
        validacao.digitarSenha();
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
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 a validação de senhas com regex para garantir critérios de segurança em Java, utilizou muito bem o encapsulamento com métodos privados para organizar a lógica e ainda compreendeu a importância da estrutura condicional para verificar múltiplos requisitos de forma clara.

Uma dica interessante para o futuro é detalhar o feedback ao usuário, mostrando quais critérios não foram atendidos. Assim:

if (!temOitoCaracteres) System.out.println("A senha deve ter pelo menos 8 caracteres.");
if (!temLetraMaiuscula) System.out.println("A senha deve conter uma letra maiúscula.");
if (!temLetraMinuscula) System.out.println("A senha deve conter uma letra minúscula.");
if (!temNumero) System.out.println("A senha deve conter um número.");
if (!temCaractereEspecial) System.out.println("A senha deve conter um caractere especial.");

Isso faz com que o usuário saiba exatamente o que precisa ajustar na senha.

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

  • Criar testes unitários: validar diferentes cenários de senha.
  • Separar responsabilidades: ter uma classe utilitária apenas para validação.
  • Generalizar regex: usar padrões mais abrangentes para caracteres especiais.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Ah, uma pergunta: o que você acha mais interessante evoluir neste código, detalhar os critérios que falharam para dar feedback ao usuário ou criar uma classe utilitária separada só para validação de senhas?

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

Abraço e bons estudos!

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