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

[SOLUCIONADO] Problema con cadena String aleatoria

Estas en el tema de Problema con cadena String aleatoria en el foro de Java en Foros del Web. Buenas, mi problema es que tengo que hacer un método que me devuelva un String con una letra aleatoria en mayúscula repetida "n" veces. Como ...
  #1 (permalink)  
Antiguo 20/06/2014, 05:37
 
Fecha de Ingreso: mayo-2014
Mensajes: 15
Antigüedad: 10 años
Puntos: 0
Problema con cadena String aleatoria

Buenas, mi problema es que tengo que hacer un método que me devuelva un String con una letra aleatoria en mayúscula repetida "n" veces. Como paramétros tiene que recibir tanto un Random como un integer para la longitud de la cadena, pero cuando lo testeo no me devuelve nada. Este es el código:

Código:
public static String cadenaAleatoria(Random rnd, Integer n){
		char[] 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'};

		char[] conjunto = new char[n];
		String cadena = "";

			int r = rnd.nextInt(elementos.length);
			conjunto[0] = elementos[r];
			String letra = conjunto.toString();
			
			while(conjunto.length < n){
				cadena = cadena + letra;
				
			}			
		
		return cadena;
		}
Saludos!
  #2 (permalink)  
Antiguo 20/06/2014, 07:45
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Problema con cadena String aleatoria

Este bucle no termina nunca

Código Java:
Ver original
  1. while(conjunto.length < n){
  2.                 cadena = cadena + letra;
  3. }

ya que o bien no entra nunca, o bien entra y no sale ya que dentro no se altera ni conjunto.length ni n.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 20/06/2014, 11:03
 
Fecha de Ingreso: mayo-2014
Mensajes: 15
Antigüedad: 10 años
Puntos: 0
Respuesta: Problema con cadena String aleatoria

Tienes razón, lo he modificado pero el resultado es el mismo

Código Java:
Ver original
  1. public static String cadenaAleatoria(Random rnd, Integer n){
  2.         char[] elementos={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
  3.                 'Q','R','S','T','U','V','W','X','Y','Z'};
  4.  
  5.         char[] conjunto = new char[n];
  6.         String cadena = "";
  7.  
  8.             int r = rnd.nextInt(elementos.length);
  9.             conjunto[0] = elementos[r]; ////contiene el caracter aleatorio
  10.             String letra = conjunto.toString(); //contiene el caracter aleatorio en String
  11.            
  12.             while(conjunto.length < n){
  13.                 cadena = cadena + letra; //suma a la cadena el caracter repetido
  14.                 for(int i=1; i < n; i++){
  15.                     conjunto[i] = 'A'; //suma 1 la longitud del array
  16.                 }
  17.                
  18.             }          
  19.        
  20.         return cadena;
  21.         }

Saludos!
  #4 (permalink)  
Antiguo 20/06/2014, 13:11
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Problema con cadena String aleatoria

Y con la modificación, dentro del while ¿donde modificas cadena.length o n para que el while deje de cumplirse?

Esto

conjunto[i] = 'A'; //suma 1 la longitud del array

no modifica la longitud del array, sólo estás rellenándolo de 'A' y la longitud sigue siendo igual.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 21/06/2014, 12:54
 
Fecha de Ingreso: mayo-2014
Mensajes: 15
Antigüedad: 10 años
Puntos: 0
Respuesta: Problema con cadena String aleatoria

Ya lo solucioné, el "for" no tenía sentido y en el while tenía que poner la longitud de la "cadena" y no del conjunto.

Etiquetas: aleatoria, cadena, 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 16:57.