Foros del Web » Programación para mayores de 30 ;) » Java »

aplicacion java de generar cadenas aleatorias, de longitud variabl

Estas en el tema de aplicacion java de generar cadenas aleatorias, de longitud variabl en el foro de Java en Foros del Web. hola, necesito hacer una aplicacion para generar cadenas aleatorias, de longitud aleatoria pero con un maximo de 20 caracteres..la cadena tiene que estar formada solo ...
  #1 (permalink)  
Antiguo 05/11/2015, 04:43
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 15 años, 6 meses
Puntos: 1
aplicacion java de generar cadenas aleatorias, de longitud variabl

hola, necesito hacer una aplicacion para generar cadenas aleatorias, de longitud aleatoria pero con un maximo de 20 caracteres..la cadena tiene que estar formada solo por letras no por numeros. también tiene la aplicacion que pedir el numero de cadenas a generar, esto ya lo he conseguido, pero generar las cadenas de letras aleatorias no lo consigo.. les dejo el codigo como lo tengo ahora..
public class CadenasAleatorias
{
private static Object math;
private static Object RandomStringUtils;


public static String main(String[] args) throws IOException
{
int contador = 0 ;
InputStreamReader leer = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(leer);
System.out.print("Escriba cuantas cadenas quiere generar: ");
int numero1 = Integer.parseInt(br.readLine());
while(contador < numero1)
{
contador++;
String [] elementos = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
"K", "L", "M","N","O","P","Q","R","S","T","U","V","W", "X","Y","Z" };
}
}
  #2 (permalink)  
Antiguo 05/11/2015, 06:40
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: aplicacion java de generar cadenas aleatorias, de longitud variabl

Buenas,

Te doy algunas pistas para que lo vayas haciendo:

-El bucle while es correcto, pero en este caso seria mejor poner un for, ya que conoces el numero de iteraciones de antemano.
-El array elementos mejor declaralo como static a nivel de la clase, ya que ahora mismo lo estas declarando innecesariabmente en cada ciclo del while.
-Dentro del primer bucle deberas calcular el numero de letras de la cadena. Pista: puedes obtener ese numero aleatorio con un new Random().nextInt(20)+1.
-Recorres ese numero aleatorio con otro for y dentro obtienes el indice de la letra a incluir de forma aleatoria mediante otro random del numero obtenido antes.
-Para acceder a la letra aleatoria basta con indicar el ultimo random al array de elentos (elementos[indice]).
-Al final de cada iteracion del primer bucle aniades siempre un salto de linea (\n) para separar las palabras.

Tambien tendras que eliminar estas dos lineas que no tienen sentido alguno:
private static Object math;
private static Object RandomStringUtils;


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 19/12/2015, 12:20
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: aplicacion java de generar cadenas aleatorias, de longitud variabl

hola..

tengo ahora el codigo asi:

Código Java:
Ver original
  1. public class CadenasAleatorias
  2. {
  3.    public static void main(String[] args) throws IOException
  4.     {
  5.                  
  6.                   int contador = 0 ;
  7.                   InputStreamReader leer = new InputStreamReader(System.in);
  8.                   BufferedReader br = new BufferedReader(leer);
  9.                   System.out.print("Escriba cuantas cadenas quiere generar: ");
  10.                   int numero1 = Integer.parseInt(br.readLine());  
  11.                   while(contador < numero1)
  12.                   {
  13.                  
  14.                          String letras = "";
  15.                         String cadena = "";
  16.                        int longitudCadena = (int) Math.floor(Math.random()*20+1);  //Se genera aleatoriamente la longitud de la cadena actual
  17.                         for (int x = 0; x < longitudCadena; x++)
  18.                         {
  19.                             int caracter = (int) Math.floor(Math.random()*27); //Generamos la cadena
  20.                             cadena = cadena + letras.charAt(caracter);
  21.                         }
  22.                         System.out.println(cadena);
  23.                     }
  24.                 }
  25.             }

pero en la linea cadena = cadena + letras.charAt(caracter);

la variable "letras" me da un error al ejecutar la aplicacion, el error es:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 17
at java.lang.String.charAt(String.java:658)
at cadenasaleatorias.CadenasAleatorias.main(CadenasAl eatorias.java:44)
Java Result: 1

(el codigo de dentro de while no es mio lo estoy adaptando por eso no se que me pasa con la variable letras)
que puedo hacer?
  #4 (permalink)  
Antiguo 20/12/2015, 05:01
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: aplicacion java de generar cadenas aleatorias, de longitud variabl

Buenas,

Es normal, estas inicializando letras a "" por lo que la posicion 17 no existe.

Deberias inicializar dicha variable con todas las 27 letras de abecedario no?

Código Java:
Ver original
  1. String letras = "ABCDE.......


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 23/12/2015, 10:59
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: aplicacion java de generar cadenas aleatorias, de longitud variabl

profesor falken muchas gracias era eso...ya me funciona

Etiquetas: aplicacion, cadenas, longitud, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:56.