Java - Ayuda con programa hallar porcentaje aplicado sabiendo precio inicial y final

 
Vista:
Imágen de perfil de Ivan
Val: 31
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Ayuda con programa hallar porcentaje aplicado sabiendo precio inicial y final

Publicado por Ivan (11 intervenciones) el 03/09/2019 02:46:51
El ejercicio dice esto aunque como con la clase no me salia estoy intentando hacerlo sin la clase y nada no da el valor que toca que en este caso seria 50%
Captura2

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
package ejercicio3;
 
import java.util.Scanner;
 
/**
 *
 * @author ivanm
 */
public class Ejercicio3 {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
        System.out.println("Introduce el precio");
        int precioOriginal = sc.nextInt();
        sc.nextLine();
 
        System.out.println("Introduce el precio rebajado");
        int precioRebajado = sc.nextInt();
        sc.nextLine();
        System.out.println(descuento(precioOriginal,precioRebajado));
    }
 
    public static int descuento(int precioOriginal, int precioRebajado) {
        int resultado = (int) (precioRebajado / precioOriginal) * 100;
        int porcentaje = 100 - resultado;
 
        return porcentaje;
    }
}

Captura
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: 1.811
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con programa hallar porcentaje aplicado sabiendo precio inicial y final

Publicado por Kabuto (445 intervenciones) el 03/09/2019 11:57:36
Hola.

Tu error está en la división.
Para obtener el porcentaje has de multiplicar el precio rebajado * 100 y luego dividir por el original.

Viene bien recordar la forma simple de como aplicar la "regla de 3"

Si el precio original es, en proporción, el 100%...
entonces el precio rebajado será, en proporción, x...


pvpOriginal --------> 100%
pvpRebajado ------> x%


Para despejar la incógnita, es decir, la x.... se multiplican los valores conocidos que están en diagonal (pvpRebajado * 100) y el resultado se divide por el valor conocido en diagonal con la incógnita (pvpOriginal)

EL resultado de todo esto se lo restas a 100, como bien haces en tu código.

Esto sería la clase que pide el enunciado.
En negita remarco el método que calcula el descuento:
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
public class Rebajas {
 
	private int porcentaje;
 
	public Rebajas() {
		porcentaje = 0;
	}
 
	public Rebajas(int porcentaje) {
		this.porcentaje = porcentaje;
	}
 
	public void setPorcentaje(int porcentaje) {
		this.porcentaje  = porcentaje;
	}
 
	public int getPorcentaje() {
		return porcentaje;
	}
 
	public int averiguaDescuento(int pvpOriginal, int pvpRebajado) {
 
		int descuento = pvpRebajado * 100 / pvpOriginal;
 
		return 100 - descuento;
	}
 
}

Y este el main donde lo ponemos en práctica:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Prueba {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
 
		System.out.print("Introduzca PVP original: ");
		int pvpOriginal = teclado.nextInt();
		System.out.print("Introduzca PVP rebajado: ");
		int pvpRebajado = teclado.nextInt();
 
		Rebajas rebaja = new Rebajas();
 
		System.out.println("Descuento aplicado: " + rebaja.averiguaDescuento(pvpOriginal, pvpRebajado));
		teclado.close();
 
	}
 
}

Resultado en consola:
1
2
3
Introduzca PVP original: 12
Introduzca PVP rebajado: 8
Descuento aplicado: 34
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 Ivan
Val: 31
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Ayuda con programa hallar porcentaje aplicado sabiendo precio inicial y final

Publicado por Ivan (11 intervenciones) el 03/09/2019 14:34:05
Wow muchas gracias la fórmula no me funcionaba y me imprimia 0 porque lo almacenaba en un int en lugar de float o double...De todos modos la fórmula funciona de ambas formas por lo que veo.
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 Kabuto
Val: 1.811
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con programa hallar porcentaje aplicado sabiendo precio inicial y final

Publicado por Kabuto (445 intervenciones) el 03/09/2019 19:41:25
Hombre, usar double o float es más exacto porque recogen la parte decimal.

Usando int tiene que funcionar igual, pero el resultado es menos exacto, ya que solo recoge la parte entera del resultado final.

Pero bueno, en un ejercicio de estas características, esto no es lo más importante.
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