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

Ayuda con este Codigo Please!!!

Estas en el tema de Ayuda con este Codigo Please!!! en el foro de Java en Foros del Web. Soy Novata en Java y me pidieron este metodo y no se xq no anda. Bueno el tema es que tengo q presentar un programa ...
  #1 (permalink)  
Antiguo 15/09/2009, 06:10
 
Fecha de Ingreso: agosto-2007
Ubicación: Argentina
Mensajes: 29
Antigüedad: 16 años, 9 meses
Puntos: 1
Exclamación Ayuda con este Codigo Please!!!

Soy Novata en Java y me pidieron este metodo y no se xq no anda.

Bueno el tema es que tengo q presentar un programa para la Facultad para generar numeros pseudo aleatorios con el Metodo de los cuadrados del medio.

El metodo consite en: partiendo de una semilla de cuatro digidos, generar n numeros pseudoaleatorios elevando la semilla al cuadrado, esto genera un numero de 8 digitos, de los cuales se debe descartar los 2 de la izquierda y los dos de la derecha y tomar los cuatro centrales como nueva semila y repetir la operacion N veces. Una vez finalizado devolver un array con los valores.

El problema que tengo es el siguiente: si en un momento dado tomo los 4 del medio y el ultimo digito es 0 se empieza a hacer todo cero las posteriores semillas.
Este me trae un error. Quisiera saber si me pueden ayudar.

Aqui esta mi codigo.

Código:
	
public int[] generarNA() {

      /*arreglo para generar numeros pseudoaleatorios enteros */		
      int arrayNA[]= new int[n]; 

       /*arreglo para almacenar la semilla y sus posteriores potencias*/
       char arraySemilla[]= new char[8];		
		
       for (int i = 0; i < arrayNA.length; i++) {
			
       //elevo la semila al cuadrado y la convierto en string para sacar los cuatro del  medio*****//
        int intSemCuadr = (int) Math.pow(semilla, 2);
        String strSemCuad = String.valueOf(intSemCuadr);//lo paso a string 
			
       //********Cereo Vector***************//
      arraySemilla= this.cerearArray(arraySemilla);
			
      //*************convierto el string a un array de caracteres y lo guardo en   arraySemilla************//
			
      arraySemilla= strSemCuad.toCharArray();
				
			 
     //-*****guardo los cuatro del medio***esto me genera un problem cuando no tengo el nº [5]*****///
			
String strNuevaSem = Character.toString(arraySemilla[2])+Character.toString(arraySemilla[3])+Character.toString(arraySemilla[4])+Character.toString(arraySemilla[5]);

      System.out.println("ns"+strNuevaSem);
      int nuevaSem = Integer.valueOf(strNuevaSem);
      arrayNA[i]= nuevaSem;
      semilla= nuevaSem;
			
}//termina de generar los n elementos
		
return arrayNA;//devueve el array con los elementos generados
}	

//************metodo para cerear el Array*************no se si funcina bien
public char[] cerearArray(char p_charArray[]){
         for (int i = 0; i < p_charArray.length; i++) {
	p_charArray[i]= '0';			
         }		
         return p_charArray;		
}

--------------------------------------------------------------------------------
Última Edición por AdvancedWeb; 11-sep-2009 a las 17:07 Razón: titulo
  #2 (permalink)  
Antiguo 15/09/2009, 14:24
 
Fecha de Ingreso: marzo-2008
Mensajes: 39
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Ayuda con este Codigo Please!!!

pues se supone que tu codigo se va a ejecutar las veces que desees dando cada vez 4 numeros ?

entonces solicita al usuario que diga cuantas veces se ejecutara y en base a eso crea el arreglo
no siempre los 4 numeros al cuadrado dan 8 y en otro lugar vi que solo toman a partir del 3er numero hasta el 6o entonces podrias hacerlo asi

Código:
        int semilla=1234;
        int aleatorio=(int)Math.pow(semilla, 2);
        //Convierte el numero a cadena
        String cadena=String.valueOf(aleatorio);
        //extrae la nueva semilla del texto
        cadena=cadena.substring(2, 6);
        //devuelve el numero a entero
        aleatorio=Integer.parseInt(cadena);
        
        System.out.println("semilla "+aleatorio);
ya seria cuestion que almacenes el numero, si te entendi mal corrige, un saludo
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 09:42.