Java - Problema en porcentaje

 
Vista:

Problema en porcentaje

Publicado por Sebastian (8 intervenciones) el 07/09/2020 00:28:26
Hola amigos, llevo bastante tiempo intentando solucionar mi error, el problema consiste en crear 3 vectores, uno para almacenar nombre otro para la bebida preferida en las comidas y el otro para el genero, luego decir el porcentaje correspondiente para las bebidas favoritas, y el otro porcentaje de acuerdo al genero que se encuestó
el problema esta en que cuando intento hallar el porcentaje me marca un 0.0, pero lo raro es que los acumuladores estan funcionando correctamente... si alguien sabe a que se debe y me puede explicar se lo agradeceria mucho!

Adjunto codigo!

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import javax.swing.JOptionPane;
 
public class Vector {
    String nombre[], bebida[], genero[];
    int cant, contL=0, contG=0, contJ=0, contM=0, contF=0;
    int pass = 0, codbebida=0;
    public void IngresarDatos(){
        cant = Integer.parseInt(JOptionPane.showInputDialog(null, "Cantidad de personas"));
        nombre = new String[cant];
        bebida = new String[cant];
        genero = new String[cant];
        for(int i = 0; i<cant; i++){
           nombre[i] = JOptionPane.showInputDialog(null, "Nombre de persona #" + (i+1)).toLowerCase();
 
            codbebida = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese bebida preferida para sus comidas"
                                                                         + "\n1- Licor"
                                                                         + "\n2- Gasegosa"
                                                                         + "\n3- Jugo"));
 
            switch(codbebida){
                case 1:
                    bebida[i] = "Licor";
                    contL++;
                    break;
                case 2:
                    bebida[i] = "Gaseosa";
                    contG++;
                    break;
                case 3:
                    bebida[i] = "Jugo";
                    contJ++;
                    break;
            }
 
            genero[i] = JOptionPane.showInputDialog(null, "Genero M/F");
            if(genero[i].equalsIgnoreCase("M")){
                genero[i] = "Masculino";
                contM++;
            }if(genero[i].equalsIgnoreCase("F")){
                genero[i] = "Femenino";
                contF++;
    }
}
    }
 
    public void Porcentajes(){
        double Plicor = (contL / cant) * 100;
        double Pgas = (contG / cant) * 100;
        double Pju = (contJ / cant) * 100;
        double PM = (contM / cant) * 100;
        double PF = (contF / cant) * 100;
               JOptionPane.showMessageDialog(null, "Porcentajes Bebidas:"
                                          + "\nLicor: " + Plicor + "%"
                                          + "\nGasegosa: " + Pgas + "%"
                                          + "\nJugo: " + Pju + "%"
                                          + "\n"
                                          + "\nPorcentajes Genero:"
                                          + "\nMasculino: " + PM + "%"
                                          + "\nFemenino: " + PF + "%");
    }
    public static void main(String[] m){
        Vector encuesta = new Vector();
 
        encuesta.IngresarDatos();
 
        encuesta.Porcentajes();
 
    }
}
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 Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema en porcentaje

Publicado por Rodrigo (623 intervenciones) el 07/09/2020 05:58:54
La division de enteros da entero siempre, no importa si la variable a la que le asignas el resultado es de otro tipo.
Fuerza el tipo de uno de los operandos a double o float para obtener los valores que deseas con alguna de las siguientes opciones:

(float) x / y
x / (float) y
(float) x / (float) y

o bien con double.

Esto se llama cast (conversion de tipos).

Podrias obtener un porcentaje mas cercano al exacto, si en vez de dividir primero, multiplicaras por 100 primero, aunque esto aun te quitaria los decimales. Mejor usa el cast indicado antes.
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

Problema en porcentaje

Publicado por Billy Joel (876 intervenciones) el 07/09/2020 17:11:43
Solo debes modificar las líneas
1
2
int cant, contL=0, contG=0, contJ=0, contM=0, contF=0;
int pass = 0, codbebida=0;

Por:
1
2
double contL = 0.0, contG = 0.0, contJ = 0.0, contM = 0.0, contF = 0.0;
int cant, pass = 0, codbebida = 0;

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
0
Comentar