return y for

sew
24 de Mayo del 2008
Hola :D

Estoy intentando recorrer un array y q dependiendo del valor q encuentre qme devuelva uncierto valor u otro con un return. El caso esq no me deja hacerlo, porq me pide un return al final del codigo y no sirven los q estan dentro del bucle para recorrer el array. Si me pudierais decir otro modo de hacerlo o cual es mi error.

Por si no me he explicado mu bien aqui dejo un ejemplo de lo q estoy intentado hacer





public int metodo(int[] array)

{

for(int i=0; i<array.length; i++)

{

if(array[i]==1)

return 2;

else

return 3;

}

//aqui me pide q devuelva un valor

}
Gracias :)


luislopezco
24 de Mayo del 2008
El compilador de java te pide un return donde lo indicas, porque se pone en todos los casos de ejecucion y uno de ellos es el siguiente, que pasaría si el arreglo que ingresas como parametro viene vacío?? La respuesta es que no entraria al for y se necesita devolver un int, por la definicion del metodo.
Coloca un return con algun valor, talvez un negativo, con esto podrias controlar el error por si viene un arreglo vacio, con esto deberian funcionar los return que pones dentro de la sentencia if.
Recuerda que cada vez que pongas un return dentro de una condicional, cabe la posibilidad de que el programa no vaya por ese camino, y si el metodo tiene que devolver un valor, debe encontrar en alguna vía posible un return.

Ale
24 de Mayo del 2008
De todas formas, aparte de lo que ha dicho luislopezco, ¿para qué quieres ese for? Aunque pusieras un return fuera, date cuenta de que nunca va a haber más de una iteración dentro del for, ya que (si el array no está vacío), la primera vez que entre ya va a devolver 2 ó 3 según el caso, y nunca va a llegar a ejecutarse con i=1, i=2..., por lo que no sirve de nada tener ese for ahí.