Java - Necesito un comparador de 3 numeros con Return

 
Vista:
sin imagen de perfil

Necesito un comparador de 3 numeros con Return

Publicado por Juan (1 intervención) el 17/09/2021 06:33:26
hola , para una tarea de la universidad me piden :
Resuelva la siguiente situación:

1- Hacer un programa que al cargar 3 números me indique cual es el mayor.

Usar una función que se llame MAYOR, reciba los valores y devuelva( usando return) el mensaje “Encontramos el mayor es ...”

Hasta ahora pude armar esto pero no compara ( el resultado siempre es 0) y el valor "mayor"(return) me dice que nunca es usado:

package clase3act1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class clase3act1 {
double mayor;
public static void main(String[] args)throws IOException {
BufferedReader bufEntrada = new BufferedReader(new InputStreamReader(System.in));
double a;
double b;
double c;

clase3act1 may=new clase3act1();
may.mostrarMayor();
System.out.println("Escriba el primer numero:");
a = Double.parseDouble(bufEntrada.readLine());
System.out.println("Escriba el segundo numero:");
b = Double.parseDouble(bufEntrada.readLine());
System.out.println("Escriba el tercer numero:");
c = Double.parseDouble(bufEntrada.readLine());
if (a>c) {
if (a>b) { a=mayor;

System.out.println("El mayor es:"+may.mostrarMayor());

} else {
if (b>a)
if (b>c)

System.out.println("El mayor es:"+may.mostrarMayor());
}
} else {
if (c>b) {
if (c>a)

System.out.println("El mayor es:"+may.mostrarMayor());
} else {
System.out.println("Los numeros no se pudieron comparar");

}
}
}
double mostrarMayor()
{
return mayor;
}
}
desde ya muchas gracias...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
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

Necesito un comparador de 3 numeros con Return

Publicado por Kabuto (1381 intervenciones) el 18/09/2021 17:05:15
Mmmhh..

Me temo que la estructura del programa está muy liada.

Una función es un subprograma que se escribe de forma individual, casi un poco ajeno al resto del programa, y retorna un valor.
Es decir, dentro de su cuerpo, en su código, ha de tener todo lo necesario para cumplir con su funcionalidad.

Sin embargo, el cuerpo de tu función, es solo esto:
1
2
3
4
double mostrarMayor()
{
return mayor;
}

No hace nada, excepto retornar el valor de una variable que ni siquiera le pertenece, porque pertenece al programa principal.

Pero es que además, lo invocas al principio del programa, cuando la variable mayor no tiene ningún valor porque aún nadie (ni la función ni el programa principal) ha hecho comparaciones buscando el mayor.
De todos modos, el valor retornado, no lo recoges en ningún sitio ni lo muestras en pantalla.
1
2
3
4
5
6
7
8
public static void main(String[] args)throws IOException {
BufferedReader bufEntrada = new BufferedReader(new InputStreamReader(System.in));
double a;
double b;
double c;
 
clase3act1 may=new clase3act1();
may.mostrarMayor(); //Valor retornado no está computado, pero tampoco se recoge o se muestra en pantalla.

Mira, te pongo un ejemplo de como solucionarlo.

El programa principal (el método main() ) se encarga de pedir los tres valores, pero no los evalúa, se los pasará a la función que se encarga de eso.

Dicha función está diseñada para recibir los tres valores, compararlos y retornar el mayor. Todo eso lo hace ella por sus propios medios, sin usar variables externas que pertenezcan a la clase principal o al método main().
Tan solo necesita que le pasemos los tres valores, lo demás corre de su cuenta.

El valor que retorna, se muestra en pantalla mediante un System.out.println. Lo marco en negrita.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.util.Scanner;
 
public class Comparar3Num {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
 
		System.out.print("Escriba el primer numero: ");
		double primero = teclado.nextDouble();
		System.out.print("Escriba el segundo numero: ");
		double segundo = teclado.nextDouble();
		System.out.print("Escriba el tercer numero: ");
		double tercero = teclado.nextDouble();
		teclado.close();
 
		System.out.println("\nEl numero mayor es: " + mayorDe3(primero, segundo, tercero));
 
	}
 
	/*
	 * Método que recibe 3 valores double y
	 * retorna el que sea mayor
	 */
	public static double mayorDe3(double n1, double n2, double n3) {
 
		if (n1 >= n2) {
			if (n1 >= n3)
				return n1;
			else
				return n3;
		}
		else {
			if (n2 >= n3)
				return n2;
			else
				return n3;
		}
	}
 
}

También se puede recoger primero en una variable, y luego mostrar esta en pantalla.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.util.Scanner;
 
public class Comparar3Num {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
 
		System.out.print("Escriba el primer numero: ");
		double primero = teclado.nextDouble();
		System.out.print("Escriba el segundo numero: ");
		double segundo = teclado.nextDouble();
		System.out.print("Escriba el tercer numero: ");
		double tercero = teclado.nextDouble();
		teclado.close();
 
		double mayor = mayorDe3(primero, segundo, tercero);
		System.out.println("\nEl numero mayor es: " + mayor);
 
	}
 
	/*
	 * Método que recibe 3 valores double y
	 * retorna el que sea mayor
	 */
	public static double mayorDe3(double n1, double n2, double n3) {
 
		if (n1 >= n2) {
			if (n1 >= n3)
				return n1;
			else
				return n3;
		}
		else {
			if (n2 >= n3)
				return n2;
			else
				return n3;
		}
	}
 
}


Lo que no se puede hacer es simplemente llamar a la función y no capturar de ningún modo el valor que retorna.
Bueno, sí se puede hacer..., Java no dará error..., pero no servirá de nada porque el valor retornado se perderá y no se podrá trabajar con él.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.util.Scanner;
 
public class Comparar3Num {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
 
		System.out.print("Escriba el primer numero: ");
		double primero = teclado.nextDouble();
		System.out.print("Escriba el segundo numero: ");
		double segundo = teclado.nextDouble();
		System.out.print("Escriba el tercer numero: ");
		double tercero = teclado.nextDouble();
		teclado.close();
 
		mayorDe3(primero, segundo, tercero); //Valor retornado se pierde
 
	}
 
	/*
	 * Método que recibe 3 valores double y
	 * retorna el que sea mayor
	 */
	public static double mayorDe3(double n1, double n2, double n3) {
 
		if (n1 >= n2) {
			if (n1 >= n3)
				return n1;
			else
				return n3;
		}
		else {
			if (n2 >= n3)
				return n2;
			else
				return n3;
		}
	}
 
}


Espero que con este ejemplo te haya quedado más claro como estructurar un programa que disponga de una función para cumplir con una tarea.
Si algo no te ha quedado claro, tan solo tienes que preguntarlo de nuevo.

Un saludo.
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