Para ese caso, puedes pasarle al método como argumento el valor que nos ha dado el usuario y usarlo para la longitud de las palabras.
De hecho, para ver como funcionan ambas posibilidades, puedes "sobrecargar" ese método con esta variante que comentamos.
"Sobrecargar" un método/función en programación significa escribir una o más variantes de ese método, conservando el mismo nombre, pero cambiando los argumentos que va a recibir entre paréntesis, ya sea el tipo y/o la cantidad que recibe.
Así, el método GenerarPalabra tendrá dos variantes.
Una, no recibe ningún argumento, y entonces la longitud de las palabras se deciden al azar.
Otra, la longitud de las palabras se recibe como argumento, así que ahora ya no se emplea un Random para decidir la longitud
Este sería el código, con los dos métodos y en el main se invoca a ambos para ver la diferencia:
public class Generador {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
System.out.print("Introduce el número de palabras que quieres que aparezcan: ");
int num = Integer.parseInt(teclado.nextLine());
System.out.println("\nPalabras con longitud al azar:");
for (int i = 0; i < num; i++)
System.out.println("La palabra generada es: "+ GenerarPalabra());
System.out.println("\nPalabras con longitud: " + num);
for (int i = 0; i < num; i++)
System.out.println("La palabra generada es: "+ GenerarPalabra(num));
teclado.close();
}
public static String GenerarPalabra(){
//La variable palabra almacena el resultado final
String palabra = "";
//La longitud de la palabra la decidimos al azar
int longitud = (int)(Math.random() * 9) + 1;
//Generamos palabra
for (int i=0; i<longitud; i++){
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;
}
public static String GenerarPalabra(int longitud){
//La variable palabra almacena el resultado final
String palabra = "";
//Generamos palabra
for (int i=0; i<longitud; i++){
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;
}
}
En pantalla, tendríamos este resultado:
Introduce el número de palabras que quieres que aparezcan: 5
Palabras con longitud al azar:
La palabra generada es: vilcvoftx
La palabra generada es: pu
La palabra generada es: gycqn
La palabra generada es: ly
La palabra generada es: vtjb
Palabras con longitud: 5
La palabra generada es: qhhds
La palabra generada es: dmwfb
La palabra generada es: sloma
La palabra generada es: egnnx
La palabra generada es: qrhgd