1
resposta

Minha solução para a criação da senha com try/catch

import java.util.Scanner;

    public class Main {
        public static void main(String[] args) {

            Scanner entrada = new Scanner(System.in);

            System.out.println("Crie sua senha: \n" +
                "* Deve ter pelo menos 8 caracteres\n" +
                "* Deve ter pelo menos um número\n" +
                "Senha: ");

        String senha = entrada.nextLine();
        try {
            if ( (int)senha.length() < 8 || senha.matches("[a-z]*")){
                throw new ErroSenhaInvalidaException(" Senha não atende aos requisitos. Tente novamente");
            }
            System.out.println("Senha criada com sucesso!");
        } catch (ErroSenhaInvalidaException e) {
            System.out.println("Erro!" + e.getMessage());
        }

}

//classe erro

public class ErroSenhaInvalidaException extends RuntimeException{

public ErroSenhaInvalidaException(String mensagem){
    super(mensagem);
}
1 resposta

Oi Lucas,

Excelente iniciativa em usar try/catch para validar a senha! 👍

No entanto, para verificar se a senha contém pelo menos um número, você deveria usar o método matches(".*[0-9].*") ou matches(".*\\d.*")

Além disso, você está convertendo o tamanho da senha para int desnecessariamente, pois o método length() já retorna um inteiro.

Ficaria assim:

            if (senha.length() < 8 || !senha.matches(".*[0-9].*")){

Para saber mais: Expressões Regulares em Java

Continue praticando e explorando as possibilidades da linguagem! 💪 💻