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

Fallo en metodo para comprobar antes de hacer un Return

Estas en el tema de Fallo en metodo para comprobar antes de hacer un Return en el foro de Java en Foros del Web. Os comento, me piden lo siguiente: Implemente un método recogerCosecha() que devuelva el númeroDeFrutas del árbol y ponga a cero el valor de esa propiedad ...
  #1 (permalink)  
Antiguo 09/10/2012, 03:42
Avatar de DCienfuegos  
Fecha de Ingreso: febrero-2009
Ubicación: Asturias
Mensajes: 195
Antigüedad: 15 años, 2 meses
Puntos: 3
Exclamación Fallo en metodo para comprobar antes de hacer un Return

Os comento, me piden lo siguiente:

Implemente un método recogerCosecha() que devuelva el númeroDeFrutas del árbol y ponga a cero el valor de esa propiedad .
Asegúrese que el estado de un objeto presente siempre valores de númeroDeFlores y NúmeroDeFrutas iguales o superiores a cero.

Y este es el codigo que tengo:

Código:
    
    public int recogerCosecha()
    {
        // comprobamos que numeroDeFlores y numeroDeFrutas es igual o superior a cero
        if (numeroDeFlores >= 0 && numeroDeFrutas >=0) {
           return numeroDeFrutas;
           numeroDeFrutas=0;
        }
        

    }
Me da de error: unreacheable stament en numeroDeFrutas=0; y si quito esa linea me da como que espera el return pero por estar en el if no me lo lee, si lo pongo fuera si compilaria pero claro no lo estaria comprobando.

¿como deberia de ser?

gracias de antemano!
  #2 (permalink)  
Antiguo 09/10/2012, 04:14
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: Fallo en metodo para comprobar antes de hacer un Return

cuando se retorna no se puede ejecutar más código, salvo que estés en un bloque try-catch-finally, donde el finally se ejecutará antes que el return.

Debería ser:

if (numeroDeFlores >= 0 && numeroDeFrutas >=0) {
int valorRetornar = numeroDeFrutas;
numeroDeFrutas = 0;
return valorRetornar ;
}

Donde usas una variable local auxiliar para almacenar el valor del número de frutas antes de modificarlo.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 09/10/2012, 04:33
Avatar de DCienfuegos  
Fecha de Ingreso: febrero-2009
Ubicación: Asturias
Mensajes: 195
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Fallo en metodo para comprobar antes de hacer un Return

Cita:
Iniciado por Fuzzylog Ver Mensaje
cuando se retorna no se puede ejecutar más código, salvo que estés en un bloque try-catch-finally, donde el finally se ejecutará antes que el return.

Debería ser:

if (numeroDeFlores >= 0 && numeroDeFrutas >=0) {
int valorRetornar = numeroDeFrutas;
numeroDeFrutas = 0;
return valorRetornar ;
}

Donde usas una variable local auxiliar para almacenar el valor del número de frutas antes de modificarlo.

He puesto lo que me has dicho:

Código:
public int recogerCosecha()
    {
        // comprobamos que numeroDeFlores y numeroDeFrutas es igual o superior a cero
        if (numeroDeFlores >= 0 && numeroDeFrutas >=0) {
            int valorRetornar = numeroDeFrutas;
            numeroDeFrutas = 0;
            return valorRetornar ;
        }
        

    }
Pero me sigue dando error al compilar: Missing return statement
  #4 (permalink)  
Antiguo 09/10/2012, 04:48
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: Fallo en metodo para comprobar antes de hacer un Return

xD, no me fijé.

Si pones un if, debes poner un return en caso de que no entre en el if.

public int recogerCosecha()
{
// comprobamos que numeroDeFlores y numeroDeFrutas es igual o superior a cero
if (numeroDeFlores >= 0 && numeroDeFrutas >=0) {
int valorRetornar = numeroDeFrutas;
numeroDeFrutas = 0;
return valorRetornar ;
}
//En tu caso
return 0;
}
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 10/10/2012, 01:59
Avatar de DCienfuegos  
Fecha de Ingreso: febrero-2009
Ubicación: Asturias
Mensajes: 195
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Fallo en metodo para comprobar antes de hacer un Return

Cita:
Iniciado por Fuzzylog Ver Mensaje
xD, no me fijé.

Si pones un if, debes poner un return en caso de que no entre en el if.

public int recogerCosecha()
{
// comprobamos que numeroDeFlores y numeroDeFrutas es igual o superior a cero
if (numeroDeFlores >= 0 && numeroDeFrutas >=0) {
int valorRetornar = numeroDeFrutas;
numeroDeFrutas = 0;
return valorRetornar ;
}
//En tu caso
return 0;
}
Me di cuenta despues tambien, pero puse return -1, ya que cero en el if si que me lo puede devolver. Gracias por la ayuda ;)
  #6 (permalink)  
Antiguo 10/10/2012, 02:54
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: Fallo en metodo para comprobar antes de hacer un Return

No hace falta que cites continuamente los comentarios previos en el foro. Salvo que te refieras a un comentario concreto muy anterior sobre el que quieras remarcar algo, se sobreentiende a qué comentario estás respondiendo.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: fallo, metodo, return
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 18:22.