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

iteraciones

Estas en el tema de iteraciones en el foro de Java en Foros del Web. Hola buenas el caso es que tengo que realizar un ejercio el cual dice que tengo que implementar un metodo que al introducirle un mes ...
  #1 (permalink)  
Antiguo 27/04/2012, 21:45
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años, 1 mes
Puntos: 0
iteraciones

Hola buenas el caso es que tengo que realizar un ejercio el cual dice que tengo que implementar un metodo que al introducirle un mes me diga el numero de personas que se afiliaron al club.El caso es que lo he hecho no me da errores de sintaxis pero no esta bien .Creo por ejemplo 5 personas y a dos les asigno el mismo mes alas otros distintos meses de afilicion ,cuando ejecuto el metodo y le digo el mes que afilie 2 personas solo me devuelve una aqui os dejo mi metodo a ver si me podeis echar una mano.El caso es que tengo que recorrer la coleccion y si se cumple lacondicion pues sumarlas y devolverlas por pantalla pero una vez que encuentro un resultado no se como decirle que continue iterando:
/**
*
*/
public int asociadoEnMes(int mes)
throws IllegalArgumentException
{
if(mes < 1 || mes > 12) {
throw new IllegalArgumentException(
"Mes " + mes + " el parametro esta fuera del rango 1 ... 12");
}

int asociadoEnMes=0;
boolean encontrado=false;
int indice=0;
while(indice<socios.size()&&!encontrado){
if((socios.get(indice)). getMes()==mes){
asociadoEnMes= asociadoEnMes+1;
encontrado=true;}
else{
indice++;}
}

return asociadoEnMes;

}
  #2 (permalink)  
Antiguo 28/04/2012, 01:51
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: iteraciones

El problema de tu código es que no hace lo que quieres que haga. Lo que hace es nada más encuentre 1 persona asociada se le ponga el boolean a true y no haga el recuento completo. Para eso tienes que recorrer toda la matriz de socios e ir sumando el numero de socios encontrados para ese mes.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 28/04/2012, 03:36
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: iteraciones

si he modificado el codigo tal como has sugerido:
/**
*
*/
public int asociadoEnMes(int mes)
throws IllegalArgumentException
{
if(mes < 1 || mes > 12) {
throw new IllegalArgumentException(
"Mes " + mes + " el parametro esta fuera del rango 1 ... 12");
}

int asociadoEnMes=0;
boolean encontrado=false;
int indice=0;
while(indice<socios.size()&&!encontrado){
if((socios.get(indice)). getMes()==mes){
asociadoEnMes= asociadoEnMes+1;
indice++;}
else{
encontrado=true;}
}

return asociadoEnMes;

}


El caso es que estoy aprendiendo java con bluej vale cuando creo un objeto club y le añado 6 personas tres de ellas afiliadas el mismo mes pues al implementar el metodo me devuelve tres bien parece que funciona,pero si vuelvo agregar otra persona afiliada el mismo mes que las otras tres y aplico el metodo me devuelve tres otra vez por que me hace esto.Sim embargo si consulto el tamaño de la coleccion si que se incrementa en 1 al añadir una nueva persona alguien me dice porque
gracias

Última edición por pipelojones; 28/04/2012 a las 03:37 Razón: seguimineto
  #4 (permalink)  
Antiguo 28/04/2012, 03:42
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: iteraciones

Olvidate del boolean encontrado y del bucle while

usa un bucle for para recorrer todos los elementos, cada vez que encuentres uno que cumpla la condición, súmalo al nº de elementos encontrados.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
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 12:29.