Java - Alguien me puede ayudar con mi codigo? :(

 
Vista:
sin imagen de perfil

Alguien me puede ayudar con mi codigo? :(

Publicado por Edrei Eduardo (4 intervenciones) el 16/12/2021 04:51:59
Soy nuevo en la programación y mi maestra me dejo este ejercicio pero no se que me falta, les agradeceria mucho si me ayudan
/*
Escriba un programa en Java usando métodos que calcule el total a pagar
por el envió de un paquete de acuerdo a los kilos que pesa, el precio por
kilo es de $20.50. Si pesa más de 20kilos el costo por kilo baja a $15.
*/

import javax.swing.JOptionPane;

public class metodo_envioo {
public static void main() {

}
int[] paquete= new int [20];
static double Envio;
static int kilospaquete;
static double precio;
static void leerDatos()
{
kilospaquete=Integer.parseInt(JOptionPane.showInputDialog("Digita cuantos kilogramos pesa el paquete"));
}
static double calcularEnvio()
{
if (kilospaquete>20)
precio=15;
else
precio=20.50;
Envio=kilospaquete*precio;
return Envio;
JOptionPane.showMessageDialog(null, "El total a pagar por el envio de su paquete de acuerdo al peso en kilogramos del paquete es"+calcularEnvio());

}
}
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

Alguien me puede ayudar con mi codigo? :(

Publicado por Kabuto (1381 intervenciones) el 16/12/2021 09:22:16
Hola, no necesitas ningún array.

Por otra parte, tu método para calcular el envío, hace un return con el valor calculado y luego pretende mostrar el resultado en un JOptionPane.
Pero eso no es posible, cuando haces return, el método termina, fin, se acabó...
Lo que haya después del return, no se ejecutará. De hecho, probablemente el compilador te indicará error de "Unreachable Code" (código inalcanzable).

Además ese JOptionPane, que no se está ejecutando, estaría intentando mostrar el resultado, no mostrando el valor de las variables, si no llamando de nuevo al método calcularEnvio()
1
JOptionPane.showMessageDialog(null, "El total a pagar por el envio de su paquete de acuerdo al peso en kilogramos del paquete es"+calcularEnvio());

Eso implicaría una serie de llamadas recursivas que nunca tendría fin, porque cada llamada a ese método supone volver a llamarse a sí mismo...
Más adelante te enseñarán qué es la recursividad y cómo aprovecharla, pero aquí ahora mismo no está bien aplicada y no se necesita.

Entonces, el JOptionPane debería mostrarse antes del return y sin volver a llamar al método. Sin embargo, ya que el método retorna el dato, creo que queda más ordenado si el JOptionPane que muestra el resultado lo ponemos en el método main.
Y ahí sí se puede llamar al método de calcularEnvio() sin provocar una recursividad infinita.

Lo único a tener en cuenta, es que al método calcularEnvio(), habrá que pasarle como argumento los kilos de peso.


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
import javax.swing.JOptionPane;
 
public class CosteEnvio {
 
	public static void main(String[] args) {
		//Pedimos peso
		int kilosPaquete=Integer.parseInt(
				JOptionPane.showInputDialog("Digita cuantos kilogramos pesa el paquete"));
 
		//Mostramos calculo, pasando los kilos de peso al método
		JOptionPane.showMessageDialog(null,
				"Coste del envio: " + calcularEnvio(kilosPaquete));
	}
 
	//Método para calcular costo del envío según el peso
	private static double calcularEnvio(int kilosPeso) {
 
		double precioKilo;
		//Precio del kilo depende del peso total
		if (kilosPeso > 20)
			precioKilo = 15;
		else
			precioKilo = 20.5;
 
		//Retornamos el cálculo
		return kilosPeso * precioKilo;
 
	}
 
}
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
sin imagen de perfil

Alguien me puede ayudar con mi codigo? :(

Publicado por Edrei Eduardo (4 intervenciones) el 16/12/2021 17:22:29
Hola, de verdad muchísimas gracias por ayudarme y darme tan buena explicación!
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