String randomica para diversos casos

Olá amigos, pesquisando aqui na GUJ aprimorei o código para validar uma String Randômica de forma simples. (Lembrando, tenho 3 anos estudando Java e ainda não atuei na área. Estou a desenvolver um projeto pessoal em arquitetura MVC).

Gostaria de agradecer ao @ViniGodoy que tinha comentado em Julho/2010 sobre:

Bloco de Citação 1. Converta a base numérica dele para uma base estranha. Eu geralmente uso a base com os dígitos 0123456789ABCDEFGHJKLMNPRTUVWXY. Uso essa base pois evita confusões do 0 com a letra O, do 1 com a letra I, do 5 com a letra S, etc.
Bloco de Citação

Através disto, desenvolvi um código com intuito de gerar uma String randômica de 5 caracteres para que seja validado o E-Mail. Irei passar essa String como parâmetro de envio do E-Mail para que o mesmo seja validado antes que os dados sejam enviados ao Banco.

Segue o código abaixo:

    //GERAR CODIGO DE 5 CHRT PARA ENVIAR AO EMAIL
    public void gerarCodigoEmail(){
        
        //STRING CÓDIGO RECEBERÁ O CÓDIGO A SER ENVIADO PARA O E-MAIL
        String codigo = "";
        
        //STRING VALORES TEM 31 POSICOES, SERÁ SORTEADO 5 DESTES
        String[] valores = {"0","1","2","3","4","5","6","7","8","9",
            "A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","T","U","V","W","X","Y"};
        
        //MÉTODO RANDOM PARA SORTEAR 5 NUMEROS (POSICOES DO VETOR 'valores')
        Random numAleatorio = new Random();
        
        //PARAR QUANDO CHEGAR A 5 CHRT
        for (int i = 0; i<5;i++){
            codigo = codigo+valores[numAleatorio.nextInt(31)]; 
        }
        //STRING CODIGO FUNCIONANDO
        //JOptionPane.showMessageDialog(null, codigo);
  
    }

Espero ter ajudado. Estou aberto a críticas ou metodologias ainda mais ágeis. Afinal, ainda tenho muito a aprender!

1 curtida

Muito bom! Se quiser gerar 5 caracteres não repetidos, uma alternativa é embaralhar o array:

String[] valores = {"0","1","2","3","4","5","6","7","8","9",
            "A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","T","U","V","W","X","Y"};        
var listaValores = Arrays.asList(valores);
Collections.shuffle(listaValores);
var codigo = "";
for (var i = 0; i < 5; i++) { 
   codigo += listaValores.get(i);
}
1 curtida
Muito bom! Se quiser gerar 5 caracteres não repetidos, uma alternativa é embaralhar o array:

Embaralhar o array e pegar suas 5 primeiras posições é realmente muito mais prático e “lógico” :open_mouth:

Irei aderir ao seu método, Muito obrigado!