elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ejercicio de métodos que no devuelven el valor al main
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicio de métodos que no devuelven el valor al main  (Leído 1,857 veces)
wung

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Ejercicio de métodos que no devuelven el valor al main
« en: 28 Diciembre 2018, 12:46 pm »

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:


Código
  1. public class Ejercicio1 {
  2.  
  3.    static Scanner teclado = new Scanner(System.in);
  4.  
  5.    public static void main(String[] args) {
  6.        double radio=0, longitud=0;
  7.        introducirRadio(radio);
  8.        calcularLongitud(radio, longitud);
  9.        System.out.println("La longitud de la circunferencia es " + longitud);
  10.    }
  11.  
  12.    public static void introducirRadio(double radio){
  13.        System.out.println("Introduzca el radio de la circunferencia");
  14.        radio = teclado.nextDouble();
  15.    }
  16.  
  17.    public static double calcularLongitud(double radio, double longitud){
  18.        longitud = 2 * radio * (Math.PI);
  19.        return longitud;
  20.    }
  21.  
  22. }
  23.  


En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Ejercicio de métodos que no devuelven el valor al main
« Respuesta #1 en: 28 Diciembre 2018, 14:57 pm »

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



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
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 Desconectado

Mensajes: 9


Ver Perfil
Re: Ejercicio de métodos que no devuelven el valor al main
« Respuesta #2 en: 28 Diciembre 2018, 15:55 pm »

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 Desconectado

Mensajes: 49



Ver Perfil
Re: Ejercicio de métodos que no devuelven el valor al main
« Respuesta #3 en: 28 Diciembre 2018, 21:42 pm »

Citar
...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.
Código
  1. calcularLongitud(radio, longitud);

El valor que devuelve el método calcularLongitud lo  tienes que guardar/asignar en tu variable longitud
Código
  1. longitud = 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 Desconectado

Mensajes: 9


Ver Perfil
Re: Ejercicio de métodos que no devuelven el valor al main
« Respuesta #4 en: 28 Diciembre 2018, 21:46 pm »

Entiendo, ya me funciona, muchas gracias!
En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Ejercicio de métodos que no devuelven el valor al main
« Respuesta #5 en: 29 Diciembre 2018, 12:23 pm »

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)

Código
  1. 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



Código
  1. package foro;
  2.  
  3. import java.util.Scanner;
  4. import java.util.logging.Level;
  5. import java.util.logging.Logger;
  6.  
  7.  
  8.  
  9. public class Ejercicion1 {
  10.  
  11.  
  12.    /**
  13.      * usando variables de instancia, cuando son static se llaman de clase
  14.      * usando modificador de acceso private por convension en java un standar
  15.      */
  16.    private Scanner leer = new Scanner(System.in);
  17.    private double radio;
  18.    private double longitud;
  19.  
  20.    /*uso de logger, es mejor que usar un vulgar System.out.println() que exponer información sensitiva de la app */
  21.    private static final Logger LOGGER = Logger.getLogger(Ejercicio1.class.getName());
  22.    public Ejercicion1() {
  23.  
  24.        instroducirRadio();
  25.        //final double resultado = calcularLongitud(radio);
  26.        //LOGGER.log(Level.INFO, "La longitud es " + resultado );
  27.  
  28.  
  29.        LOGGER.log(Level.INFO, "La longitud es " + calcularLongitud(radio));
  30.    }
  31.  
  32.    private double calcularLongitud(double radio) {
  33.        this.longitud = ((radio * 2) * Math.PI);
  34.        return longitud;
  35.    }
  36.  
  37.    /**
  38.      * No es la mejor manera de usar esta metodo , se podria hacer sin el parametro double radio
  39.      *
  40.      */
  41.    private void instroducirRadio() {
  42.        System.out.println("Instroduce radio ");
  43.  
  44.  
  45.        /*puedes tambien usar el puntero this para diferenciar la variable de instancia al parametros*/
  46.        this.radio = leer.nextDouble();
  47.    }
  48.  
  49.    public static void main(String ...blablalba) {
  50.        new Ejercicion1();
  51.    }
  52. }
  53.  


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



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] %~f1 <- no me devuelven ningun valor
Scripting
<[(x)]> 4 3,695 Último mensaje 19 Febrero 2009, 17:33 pm
por _m
ejercicio con metodos y arreglos
Java
jimytron 5 6,910 Último mensaje 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 Último mensaje 3 Agosto 2012, 06:29 am
por xiruko
[Duda] Valor de retorno main
Programación C/C++
apoeti 3 3,135 Último mensaje 12 Septiembre 2012, 16:16 pm
por apoeti
Ayuda con ejercicio de arreglos y métodos en Java
Java
megasaw1 1 2,052 Último mensaje 11 Mayo 2017, 06:22 am
por 3n31ch
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines