Array con returns?

Iniciado por AlvaradoGunner, 23 Enero 2009, 21:39 PM

0 Miembros y 1 Visitante están viendo este tema.

AlvaradoGunner

Hola, soy nuevo y bueno me encargaron esto:
Elaborar un programa que incluya métodos para realizar conversiones de temperatura.

   El programa debe contener métodos (con tipo de retorno double) para convertir de Celsius a Fahrenheit y viceversa, de Celsius a Kelvin y viceversa, y finalmente de Fahrenheit a Kelvin y viceversa.

   El método main debe contener al menos una llamada a cada método con su respectiva impresión a pantalla del resultado obtenido.


Trate de hacerlo lo mas "corto"posible.. es decir. no quiero hacer seis metodos.. pero bueno. esta es mi error:
Citar--------------------Configuration: <Default>--------------------
C:\putamadre.java:16: missing return statement
}
^
C:\putamadre.java:27: missing return statement
}
^
C:\putamadre.java:38: missing return statement
}
^
3 errors

Process completed.

Y aqui mi programa:

Citarclass putamadre{
   
// Variables Globales
static int i;
static double resultados[]=new double[1],Celsius=90.0,Kelvin=90.0,Fahr=90.0;

//Método Celsius a F y a K
public static double CelsFahKel(double Fahr,double Kelvin){
   
resultados[0]=(Fahr-32)/(1.8);
resultados[1]=Kelvin-273.15;

for(i=1;i<=2;i++){
   return resultados;
}
}

//Método Fahrenheit a C y a K
public static double FahCelsKel(double Celsius,double Kelvin){
   
resultados[0]=Celsius*1.8+32;
resultados[1]=9/5*Kelvin+32;

for(i=0;i<=1;i++){
   return resultados;
}
}

//Método Kelvin a C y F
public static double KelCelsFah(double Celsius,double Fahr){

resultados[0]=Celsius+273.15;
resultados[1]=(Fahr-32)*5/9;

for(i=0;i<=1;i++){
   return resultados;
}
}

//Método Main
public static void main(String args[]){

CelsFahKel(Fahr,Kelvin);
System.out.println("Celsius a Fahrenheit :"+resultados[0]+" Celsius a Kelvin:"+resultados[1]);
FahCelsKel(Celsius,Kelvin);
System.out.println("Fahrenheit a Celsius:"+resultados[0]+" Fahrenheit a Kelvin:"+resultados[1]);
KelCelsFah(Celsius,Fahr);
System.out.println("Kelvin a Celsius:"+resultados[0]+" Kelvin a Fahrenheit:"+resultados[1]);


}//Fin de Main

}//Fin de clase

Eso seria, se pueden mandar mas de 1 return por metodo?. Cómo?, Tendre que hacer 6 metodos?. Gracias!.

-Ramc-

No entiendo para que haces fors de una sola vuelta lol y otro de 2 devolviendo valores, es decir, solo puedes devolver un valor por llamada a un método, si quieres devolver mas de uno, devuelve un vector, esto me huele a copy-paste.

Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.

AlvaradoGunner

#2
Bueno. en realidad todos hacen 2 ciclos, yo lo que preguntoe s que si apartir de fors se le puede asignar el valor al arreglo resultados i, y los devuelva. Porcierto, puedes ponerme un ejemplo?

Amerikano|Cls

#3
Código (java) [Seleccionar]
for(i=1;i<=2;i++){
   return resultados;
}


Esto no tiene sentido, pues al ejecutar el return se saldra de una del método y no alcanzara al otro ciclo es decir al segundo.

Este tambien es otro error que hay:

Código (java) [Seleccionar]
static double resultados[]=new double[1],Celsius=90.0,Kelvin=90.0,Fahr=90.0;

pues la declaracion de un arreglo es como sigue:

Código (java) [Seleccionar]
Tipo_Dato nombre[] = new Tipo_Dato[longitud_Array]

Y sobre lo otro si lo que quieres es devolver todo el array, basta con quitar el for y ya, pero eso si debes modificar el tipo de retorno de cada método para que devuelva un Double[] (arreglo de tipo Double):


Código (java) [Seleccionar]
public static double[] CelsFahKel(double Fahr,double Kelvin){

resultados[0]=(Fahr-32)/(1.8); //asignas los valores
resultados[1]=Kelvin-273.15;

return resultados; //Retorna el arreglo
}


Y para la llamada del método desde el main(), haces esto:

Código (java) [Seleccionar]
public static void main(String args[]){

double[] temp = new double[1];
temp =  CelsFahKel(Fahr,Kelvin);
System.out.println("Celsius a Fahrenheit :"+temp[0]+" Celsius a Kelvin:"+temp[1]);

//Luego vuelves a repetir esto a excepcion de la declaracion del array, para cada metodo.


}


Y ya solo basta con repetir la asignacion y enseguida el print para cada metodo y yap, eso si a cada metodo debes hacerles las modificaciones que acabas de ver ;).

Un salu2 y para la proxima no te haremos tus tareas  :-X




Mi blog:
http://amerikanocls.blogspot.com

Ragnarok

Cita de: AlvaradoGunner en 23 Enero 2009, 21:39 PM
Trate de hacerlo lo mas "corto"posible.. es decir. no quiero hacer seis metodos.. pero bueno. esta es mi error:

Antes que nada, esa no es forma de programar, el código que has hecho no es claro y tiene una cohesión muy baja en los métodos que presenta, y el acoplamiento es bastante mejorable.

Java no tiene yield como python, por lo que cada método hace un único return, si quieres devolver varias cosas las tienes que devolver a la vez.

De todas formas con dos métodos te vale, en el primero (debería ser el constructor de la clase conversor) pasas el valor de la temperatura y las unidades en que se mide, y como segundo método haces un get del valor pasando las unidades en que lo quieres. Menos que eso no se puede hacer.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones