HOWTO · Java
Gerar Carácter Aleatório em Java
Este tutorial introduz a forma de gerar um carácter aleatório em Java.
Nesta página
Neste tutorial, iremos introduzir como podemos gerar um carácter aleatório usando vários métodos. Introduziremos três métodos com exemplos para compreender melhor o tópico.
Gerar um carácter aleatório utilizando random.nextInt() em Java
Random é a classe mais comummente utilizada em Java para gerar um valor aleatório, mas não pode gerar caracteres. Para aleatorizar caracteres utilizando a classe Random, podemos utilizar random.nextInt() para gerar números inteiros aleatórios. Cada carácter corresponde a um número.
Podemos utilizar um carácter como um limite na função nextInt(). No exemplo seguinte, podemos ver que um objecto da classe Random é criado e depois (random.nextInt(26) + 'a') é utilizado. Aqui, o caractere 'a' corresponde ao número 97, utilizando o qual podemos gerar 26 números inteiros aleatórios que correspondem ao alfabeto em minúsculas.
Finalmente, temos de lançar o inteiro gerado a um caractere.
import java.util.Random;
public class RandomChar {
public static void main(String[] args) {
Random random = new Random();
char randomizedCharacter = (char) (random.nextInt(26) + 'a');
System.out.println("Generated Random Character: " + randomizedCharacter);
}
}
Resultado:
Generated Random Character: p
Gerar carácter aleatório a partir de uma string utilizando random.nextInt() e charAt()
No exemplo seguinte, utilizaremos novamente a classe Random, e o seu método nextInt(), mas geramos um carácter aleatório a partir de um array já definido de caracteres.
Abaixo podemos ver que setOfCharacters é uma string com vários caracteres, incluindo alfabetos, números, e símbolos. Para gerar um carácter aleatório a partir desta string, utilizaremos o comprimento de setOfCharacters como argumento de random.nextInt(). Uma vez gerado um inteiro aleatório, utilizamo-lo para obter um caractere num índice ou posição aleatória, utilizando charAt(). Ele irá retornar um char aleatório de setOfCharacters.
import java.util.Random;
public class RandomChar {
public static void main(String[] args) {
Random random = new Random();
String setOfCharacters = "abcdefghxyz1234567-/@";
int randomInt = random.nextInt(setOfCharacters.length());
char randomChar = setOfCharacters.charAt(randomInt);
System.out.println("Random character from string: " + randomChar);
}
}
Resultado:
Random character from string : 4
Gerar carácter aleatório utilizando RandomStringUtils do Apache Commons
No último exemplo, utilizamos uma classe RandomStringUtils da biblioteca Apache Commons. A classe RandomStringUtils tem uma função randomAlphanumeric() para gerar strings alfanuméricas aleatórias. A função randomAlphanumeric(count) toma um único argumento, que é o comprimento da string aleatória que queremos.
No exemplo abaixo, passamos apenas 1 para o método randomAlphanumeric(), pois só queremos um único caractere. Mas esta função retorna o resultado como uma string. É por isso que temos de o converter para um char. Assim, utilizamos charAt() para obter o caracter da string.
import org.apache.commons.lang3.RandomStringUtils;
public class RandomChar {
public static void main(String[] args) {
String randomizedString = RandomStringUtils.randomAlphanumeric(1);
char randomizedCharacter = randomizedString.charAt(0);
System.out.println("Generated Random Character: " + randomizedCharacter);
}
}
Resultado:
Generated Random Character: L