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!.
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.
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?
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:
static double resultados[]=new double[1],Celsius=90.0,Kelvin=90.0,Fahr=90.0;
pues la declaracion de un arreglo es como sigue:
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):
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:
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
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.