Autor
|
Tema: Ejercicio de métodos que no devuelven el valor al main (Leído 1,857 veces)
|
wung
Desconectado
Mensajes: 9
|
Buenas, el tema es que quiero hacer un programa con el que pueda calcular la longitud de una circunferencia cuyo radio se introduce por teclado, y quiero hacerlo usando dos métodos, uno para coger el radio por teclado y otro para hacer la operación del cálculo de la longitud. No soy capaz de hacer que los datos sean devueltos correctamente al método main, el resultado da siempre 0 (es decir el valor con el lo inicializo). Si alguien me explica qué falla lo agradecería, aquí está el código que tengo: public class Ejercicio1 { static Scanner teclado = new Scanner (System. in); public static void main (String[] args ) { double radio=0, longitud=0; introducirRadio(radio); calcularLongitud(radio, longitud); System. out. println("La longitud de la circunferencia es " + longitud ); } public static void introducirRadio(double radio){ System. out. println("Introduzca el radio de la circunferencia"); radio = teclado.nextDouble(); } public static double calcularLongitud(double radio, double longitud){ longitud = 2 * radio * (Math. PI); return longitud; } }
|
|
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
Debes definir variables de clase, que tienen alcance en todo el cuerpo de la clase, tal cual como hiciste con Scanner Y tú método calcularLongitud te retorna un valor, no lo estas usando...
|
|
« Última modificación: 29 Diciembre 2018, 12:35 pm por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
|
|
|
wung
Desconectado
Mensajes: 9
|
Hola, gracias por responder.
Vale, he puesto static double radio=0, longitud=0; fuera de main, pero no sé como hacer para usar el valor que retorna calcularLongitud. Mi idea era que al devolver longitud luego la siguiente línea de main lo usara para imprimirla (aunque ahora que lo pienso por ese mismo razonamiento debería haberlo hecho también con radio). He probado haciéndolos ambos void y haciendo que ambos retornen valores pero nada.
|
|
|
En línea
|
|
|
|
HardC0d3
Desconectado
Mensajes: 49
|
...pero no sé como hacer para usar el valor que retorna calcularLongitud. Al llamar al método calcularLongitud, en la línea 8 de tu código, no estás asignando el valor devuelto a ninguna variable. calcularLongitud(radio, longitud);
El valor que devuelve el método calcularLongitud lo tienes que guardar/asignar en tu variable longitudlongitud = calcularLongitud(radio, longitud);
A partir de ahí, si la variable longitud es global, podrás usarla en cualquier parte del código.
|
|
« Última modificación: 28 Diciembre 2018, 22:35 pm por HardC0d3 »
|
En línea
|
|
|
|
wung
Desconectado
Mensajes: 9
|
Entiendo, ya me funciona, muchas gracias!
|
|
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
Entiendo, ya me funciona, muchas gracias!
Esta linea también te funcionaba o hacer la asignación con = , pero previamente definiendolas como variables de clase con static para que puedar usarlas en el main (revisa diferencias entre variables de instancia, variables de clase) System. out. println("La longitud de la circunferencia es " + calcularLongitud (radio, longitud ));
@wung emplea el uso de constructores en vez de hacer toda la lógica en el main doc, y te servirían ambos tipos de variables tanto de clase como de instancia, en este ejemplo no tienes que crear la variables estáticas, aunque también puede hacerlo package foro; import java.util.Scanner; import java.util.logging.Level; import java.util.logging.Logger; public class Ejercicion1 { /** * usando variables de instancia, cuando son static se llaman de clase * usando modificador de acceso private por convension en java un standar */ private Scanner leer = new Scanner (System. in); private double radio; private double longitud; /*uso de logger, es mejor que usar un vulgar System.out.println() que exponer información sensitiva de la app */ private static final Logger LOGGER = Logger.getLogger(Ejercicio1.class.getName()); public Ejercicion1() { instroducirRadio(); //final double resultado = calcularLongitud(radio); //LOGGER.log(Level.INFO, "La longitud es " + resultado ); LOGGER.log(Level.INFO, "La longitud es " + calcularLongitud(radio)); } private double calcularLongitud(double radio) { this. longitud = ((radio * 2) * Math. PI); return longitud; } /** * No es la mejor manera de usar esta metodo , se podria hacer sin el parametro double radio * */ private void instroducirRadio() { System. out. println("Instroduce radio "); /*puedes tambien usar el puntero this para diferenciar la variable de instancia al parametros*/ this.radio = leer.nextDouble(); } public static void main (String ... blablalba) { new Ejercicion1(); } }
que tal @HardC0d3, en java no existen variables globales, se les llaman variables de instancia y variables de clase cuando son static
|
|
« Última modificación: 6 Enero 2019, 10:53 am por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Batch] %~f1 <- no me devuelven ningun valor
Scripting
|
<[(x)]>
|
4
|
3,695
|
19 Febrero 2009, 17:33 pm
por _m
|
|
|
ejercicio con metodos y arreglos
Java
|
jimytron
|
5
|
6,910
|
13 Enero 2012, 23:17 pm
por 1mpuls0
|
|
|
[cagada]: gcc main.c -o main.c. posibilidad de recuperar codigo fuente??
Programación C/C++
|
xiruko
|
5
|
4,232
|
3 Agosto 2012, 06:29 am
por xiruko
|
|
|
[Duda] Valor de retorno main
Programación C/C++
|
apoeti
|
3
|
3,135
|
12 Septiembre 2012, 16:16 pm
por apoeti
|
|
|
Ayuda con ejercicio de arreglos y métodos en Java
Java
|
megasaw1
|
1
|
2,052
|
11 Mayo 2017, 06:22 am
por 3n31ch
|
|