Los ejercicios en los que es necesario generar números y letras aleatorias en Java cuando uno está comenzando a programar son más que recurrentes. Para los números podemos utilizar el método ramdom de la clase Math, o la clase Random del paquete Java.Util, pero ¿cómo generamos letras aleatorias?
A continuación, vamos a ver un método llamado GenerarPalabra que devolverá un String con un número aleatorio de caracteres aleatorios, de esta forma veremos como generar cadenas de caracteres.
En primer lugar, hay que aclarar que no hay un método de ninguna clase (al menos que yo sepa) que genere letras aleatorias. Para lograr esto hay que recurrir al valor numérico de estos caracteres en el alfabeto Ascii. Es decir, para conseguir una de las letras del alfabeto el minúsculas habrá que generar un número aleatorio que se encuentre en el rango en el que estos caracteres están definidos en Ascii, que será entre el 97 y el 122. Podéis consultar a que carácter corresponde cada número en la Wikipedia o en elcodigoascii.com.ar.
Veamos pues el método:
public static String GenerarPalabra(){
//La variable palabra almacena el resultado final
String palabra = "";
//La variable caracteres es un número aleatorio entre 2 y 20 que define la
//longitud de la palabra.
int caracteres = (int)(Math.random()*20)+2;
//Con un bucle for, que recorreremos las veces que tengamos almacenadas en la
//variable caracteres, que será como mínimo 2, iremos concatenando los
//caracteres aleatorios.
for (int i=0; i<caracteres; i++){
//Para generar caracteres aleatorios hay que recurrir al valor numérico de estos
//caracteres en el alfabeto Ascii. En este programa vamos a generar palabras con
//letras minúsculas, que se encuentran en el rango 97-122. El método floor
//devuelve el máximo entero.
int codigoAscii = (int)Math.floor(Math.random()*(122 -
97)+97);
//para pasar el código a carácter basta con hacer un cast a char
palabra = palabra + (char)codigoAscii;
}
return palabra;
}
Como veis, primero se establece un número de caracteres aleatorios entre 2 y 20 para, a continuación, generar esos caracteres e ir concatenándolos en la variable de tipo String que devolverá el método.
Para convertir el número a una letra hay que hacer un cast a char, como podéis ver en la línea en la que se van concatenando los caracteres.
El método devolverá una cadena de caracteres aleatorios, que serán letras minúsculas, con una longitud entre 2 y 20 caracteres.
