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

[SOLUCIONADO] Funcion boolean da error raro

Estas en el tema de Funcion boolean da error raro en el foro de Java en Foros del Web. Tengo la siguiente función la cual se supone que deberia funcionar bien, pero sin embargo me dice que la funcion boolean debe tener un return, ...
  #1 (permalink)  
Antiguo 11/11/2013, 02:47
 
Fecha de Ingreso: agosto-2012
Mensajes: 8
Antigüedad: 11 años, 8 meses
Puntos: 0
Funcion boolean da error raro

Tengo la siguiente función la cual se supone que deberia funcionar bien, pero sin embargo me dice que la funcion boolean debe tener un return, cosa que está contemplada y tiene varios, no se cual es el fallo que estoy teniendo, ¿Podriais echarme una mano? Gracias.

Cita:
public static boolean tieneRol(String dni_usuario, int rol){

if(rol==ROL_ACCESO_PUBLICO){
//Cualquiera puede acceder
return true;
}else{
Connection con = null;
PreparedStatement stmt = null;
ResultSet resultados = null;
if(rol==ROL_ACCESO_PUBLICO){
//Cualquiera puede acceder //Es administrador por lo que tiene acceso ilimitado
LOG.debug("El usuario '" + dni_usuario + "' SI tiene el rol necesario" + rol);
return true;
}

try{
con = getConexion();
String sql = SQL_SELECT_ROLES_USUARIO;
LOG.debug("Ejecutando sentencia: '" + sql + "'");
stmt = con.prepareStatement(sql);
stmt.setString(1,dni_usuario);
LOG.debug("dni '" + dni_usuario + "'");
resultados = stmt.executeQuery();

while(resultados.next()){
int Urol = resultados.getInt(1);
LOG.debug("Urol '" + Urol + "'");
if(Urol==ROL_ADMINISTRADOR){
//Cualquiera puede acceder //Es administrador por lo que tiene acceso ilimitado
LOG.debug("El usuario '" + dni_usuario + "' SI tiene el rol necesario" + rol);
return true;
}else{
if(Urol==rol){
//Tiene el rol necesario para entrar
LOG.debug("El usuario '" + dni_usuario + "' SI tiene el rol necesario" + rol);
return true;
}else{
LOG.debug("El usuario '" + dni_usuario + "' NO tiene el rol necesario" + rol);
return false;
}
}
}
} catch ( Exception e ){
LOG.error(e);
LOG.debug("El usuario '" + dni_usuario + "' NO tiene el rol" + rol);
return false;
} finally{
try{
resultados.close();
}catch(Exception e) {}
try{
stmt.close();
} catch (Exception e){}
try{
con.close();
}catch(Exception e){}
}
}
}
  #2 (permalink)  
Antiguo 11/11/2013, 06:09
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Funcion boolean da error raro

Viendo sólo el código al no estar identado es difícil, pero creo que te falta un return si resultadoss.next es falso.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 11/11/2013, 06:32
 
Fecha de Ingreso: noviembre-2012
Mensajes: 40
Antigüedad: 11 años, 5 meses
Puntos: 7
Como comenta Xerelo, te faltará algun return.

Lo ideal en estos casos suele ser declarar una variable booleana, ir seteandola segun tus necesidades, y finalmente con el valor final de la variable, retornarla de esta forma tendrás un único return en tu código.

Recuerda que cuantos más return tengas, mayor será la complejidad ciclomática de tu método, y por lo tanto, menos mantenible.

Saludos.
  #4 (permalink)  
Antiguo 11/11/2013, 06:52
 
Fecha de Ingreso: agosto-2012
Mensajes: 8
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Funcion boolean da error raro

Muchas gracias a ambos, parece que le faltaba un return pero no se donde, asi que seguí el consejo de marrons e hice la variable, al final retornaba la variable y listo. Me va perfecto :)

Muchas gracias a ambos ^^

Etiquetas: boolean, funcion, raro, 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 10:03.