Foro de elhacker.net

Programación => Java => Mensaje iniciado por: AlvaradoGunner en 23 Enero 2009, 21:39 pm



Título: Array con returns?
Publicado por: AlvaradoGunner en 23 Enero 2009, 21:39 pm
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:

Citar
class 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!.


Título: Re: Array con returns?
Publicado por: -Ramc- en 23 Enero 2009, 21:45 pm
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.


Título: Re: Array con returns?
Publicado por: AlvaradoGunner en 23 Enero 2009, 22:04 pm
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?


Título: Re: Array con returns?
Publicado por: Amerikano|Cls en 23 Enero 2009, 23:41 pm
Código
  1. for(i=1;i<=2;i++){
  2.   return resultados;
  3. }

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
  1. 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
  1. 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
  1. public static double[] CelsFahKel(double Fahr,double Kelvin){
  2.  
  3. resultados[0]=(Fahr-32)/(1.8); //asignas los valores
  4. resultados[1]=Kelvin-273.15;
  5.  
  6. return resultados; //Retorna el arreglo
  7. }

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

Código
  1. public static void main(String args[]){
  2.  
  3. double[] temp = new double[1];
  4. temp =  CelsFahKel(Fahr,Kelvin);
  5. System.out.println("Celsius a Fahrenheit :"+temp[0]+" Celsius a Kelvin:"+temp[1]);
  6.  
  7. //Luego vuelves a repetir esto a excepcion de la declaracion del array, para cada metodo.
  8.  
  9.  
  10. }

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


Título: Re: Array con returns?
Publicado por: Ragnarok en 24 Enero 2009, 07:07 am
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.