Java - retornar 2 variables desde un método

 
Vista:
Imágen de perfil de nelson
Val: 17
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

retornar 2 variables desde un método

Publicado por nelson (11 intervenciones) el 24/06/2019 01:56:05
Hola a todos tengo una duda y es que he intentado devolver estos dos valores, pero no he podido, estoy estancado en esto que se que debe ser simple.
tengo un paquete en el que tengo la clase (ejercicios.java) y la otra clase main(donde creo el objeto 'ejercicio6').
y nesecito retornar el valor de (s) y el valor de (aux2), pero no puedo. cualquier ayuda sera bienvenida

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public double Ejercicio6() throws IOException{
    //una fuente de datos registra varias edades, la edad 0 indica el termino de ingreso de datos, Realizar
    //un programa para determinar el promedio de las edades ingresadas y el % de personas mayoes a 50 años
    BufferedReader bu = new BufferedReader(new InputStreamReader(System.in));
    double m = 1, aux = 0, contador1 = 0, contador2 = 0;
    System.out.println("La edad o indica el termino de Ingreso de datos");
    while(m != 0){
        System.out.print("Ingresa una edad: ");
        m = Integer.parseInt(bu.readLine());
        contador1++;//sumando las edades
        aux = aux + m;
        if(m > 50)
            contador2++;//sumando los mayores a 50
 
    }
    double s = (contador2 * 100)/(contador1 -1);
    double aux2 = aux /(contador1 -1);
    System.out.println("El promedio de las edades es: " + aux2);
    System.out.println("El porcentage de personas mayores años es : " + s);
    return aux2;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

retornar 2 variables desde un método

Publicado por Kabuto (1381 intervenciones) el 24/06/2019 11:22:04
Lo que puedes hacer es devolver los datos en un array de dos elementos
Luego tan solo hay que tener en cuenta que allá donde se recoga el valor retornado, saber que datos hay en la posicion [0] y cuál en la posición [1]
En este ejemplo que pongo, en [0] está el promedio de edad y en [1] el porcentaje de personas mayores.

En negrita marco los cambios importantes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public double[] Ejercicio6() throws IOException{
//una fuente de datos registra varias edades, la edad 0 indica el termino de ingreso de datos, Realizar
//un programa para determinar el promedio de las edades ingresadas y el % de personas mayoes a 50 años
BufferedReader bu = new BufferedReader(new InputStreamReader(System.in));
double m = 1, aux = 0, contador1 = 0, contador2 = 0;
System.out.println("La edad o indica el termino de Ingreso de datos");
while(m != 0){
System.out.print("Ingresa una edad: ");
m = Integer.parseInt(bu.readLine());
contador1++;//sumando las edades
aux = aux + m;
if(m > 50)
contador2++;//sumando los mayores a 50
 
}
double s = (contador2 * 100)/(contador1 -1);
double aux2 = aux /(contador1 -1);
System.out.println("El promedio de las edades es: " + aux2);
System.out.println("El porcentage de personas mayores años es : " + s);
double[] datos = new double[] {aux2, s};
return datos;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de nelson
Val: 17
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

retornar 2 variables desde un método

Publicado por nelson (11 intervenciones) el 25/06/2019 01:05:24
muchas gracias , ya entendi , te lo agradesco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

retornar 2 variables desde un método

Publicado por Billy Joel (876 intervenciones) el 24/06/2019 17:00:48
Cuando tienes que devolver mas de un valor en un método, entonces una opción sería utilizar una clase que contenga las propiedades que necesitas devolver.

He visto tu proyecto y para dar solución a tu pregunta he creado la clase Respuesta6 que tiene como propiedades a:
datosLeidos
edadesMayores50
porcentajeMayores50
promedioEdades

Y tu método ejercicio6 lo he modificado para que devuelva un objeto de la clase Respuesta6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public Respuesta6 ejercicio6() throws IOException {
    //una fuente de datos registra varias edades, la edad 0 indica el termino de ingreso de datos, Realizar
    //un programa para determinar el promedio de las edades ingresadas y el % de personas mayoes a 50 años
    BufferedReader bu = new BufferedReader(new InputStreamReader(System.in));
    int m = 1, totalEdades = 0, contadorEdades = 0, contadorEdadesMayor50 = 0;
    System.out.println("La edad o indica el termino de Ingreso de datos");
    while (m != 0) {
        System.out.print("Ingresa una edad: ");
        m = Integer.parseInt(bu.readLine());
        contadorEdades++;//sumando las edades
        totalEdades = totalEdades + m;
        if (m > 50) {
            contadorEdadesMayor50++;//sumando los mayores a 50
        }
    }
    //double s = (contadorEdadesMayor50 * 100) / (contadorEdades - 1);
    double porcentajeMayor50 = contadorEdadesMayor50 / totalEdades * 100;
    double promedio = totalEdades / contadorEdades ;
    Respuesta6 respuesta = new Respuesta6(contadorEdades, contadorEdadesMayor50, porcentajeMayor50, promedio);
    //System.out.println("El promedio de las edades es: " + String.format("%.2f", promedio));
    //System.out.println("El porcentage de personas mayores años es : " + String.format("%.2f", porcentajeMayor50));
    return respuesta;
}

Entonces en el método main lo resolverías así:
1
2
3
Ejercicios seis = new Ejercicios();
Respuesta6 r6 = seis.ejercicio6();
System.out.println(r6.toString());

De todas formas adjunto el proyecto para que veas como quedó todo.
Espero haber podido resolver tu duda...

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de nelson
Val: 17
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

retornar 2 variables desde un método

Publicado por nelson (11 intervenciones) el 25/06/2019 01:06:56
muchas gracias ya entendi , me sirvio mucho , te lo agradesco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de nelson
Val: 17
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

retornar 2 variables desde un método

Publicado por nelson (11 intervenciones) el 04/07/2019 01:28:57
amigo, estuve revisando tu codigo y esta bueno es una manera diferente de realizarlo, me gusto porque es mas largo y contiene cosas que no habia vist, pero tengo una duda, en la clase respuesta6, defines los atributos como null desde un princio, eso no me quedo tan claro y lo otro al sobreescribir el metodo to String , tambien vuelves a definirlos null, tampoco me quedo claro eso. si me ,o puedieras explicar te lo agradeceria.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

retornar 2 variables desde un método

Publicado por Billy Joel (876 intervenciones) el 04/07/2019 04:38:46
Los pongo null porque depues puedo verificar las propiedades si son null.
La verdad no hay un motivo subliminal ni nada de eso. Solo lo hice así y ya...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar